[解決済み] これを理解するのを助けてくれる?"よくあるRESTの間違い "です。セッションは無関係"
質問
免責事項: 私はRESTの流派の初心者で、それを理解しようとしています。
で、このページを読んでいると RESTのよくある間違い そして、セッションが無関係であるというセクションに完全に困惑していることに気づきました。このページにはこう書かれています。
クライアントが ログインまたは接続を開始する必要があります。 HTTP認証は は、すべてのメッセージで自動的に クライアント アプリケーションは リソースであり、サービスではありません。したがって ログインする必要がない 例えば で飛行機を予約しているとします。 REST ウェブサービスです。を作成することはありません。 への新しいセッション接続を作成します。 サービスです。むしろ、quot;旅程 オブジェクトを作成します。 の旅程を作成します。を記入し始めることができます。 しかし、その後に全く別の 他の場所で別のコンポーネントを ウェブで他の空白を埋めることができます。 セッションは存在しないので セッションの状態を移行する問題 クライアント間で また のセッションアフィニティの問題です。 サーバに負荷がかかりますが バランシングの問題が続く)。
HTTP認証がすべてのメッセージで自動的に行われることはわかりましたが、どのように行われるのですか?ユーザー名やパスワードはリクエストごとに送信されるのでしょうか?それは単に攻撃対象領域を増やすだけではないのですか?パズルの一部が欠けているような気がします。
RESTサービスがあるとまずいかな、例えば。
/session
GET リクエストを受け付け、ユーザー名とパスワードをリクエストの一部として渡し、認証が成功したらセッショントークンを返し、それを以降のリクエストに渡すことができますか?RESTの観点からは意味があるのでしょうか、それともポイントがずれているのでしょうか?
解決方法は?
RESTfulであるためには、HTTPのステートレスな性質と完全に調和するように、各HTTPリクエストは受信者がそれを処理するのに十分な情報をそれ自体で運ぶ必要があります。
<ブロッククオートなるほど、HTTP認証は は、すべてのメッセージで自動的に行われます。 - が、どのように?
はい、ユーザー名とパスワードはすべてのリクエストで送信されます。 そのための一般的な方法は ベーシックアクセス認証 と ダイジェストアクセス認証 . そして、そう、盗聴者はユーザーの認証情報を捕らえることができるのです。 そのため、送受信されるすべてのデータを トランスポート・レイヤー・セキュリティ(TLS) .
REST サービス、例えば /session、は GET リクエストに ユーザー名/パスワードの一部として というセッション・トークンを返します。 認証に成功した場合 を渡すことができます。 それ以降のリクエストは?それは RESTの観点からは意味があるのか、それとも というのは的外れなのでは?
とはならないでしょう。 RESTful しかし、これはユーザーにとって便利なものであるため、非常に一般的なものです。
セッション・トークンとは、一般に、「セッション・トークン」と呼ばれるものです。 ログインクッキー . 例えば、ヤフーのアカウントにログインしようとすると、「2週間ログインを維持する」というチェックボックスがあります。 これは本質的に(あなたの言葉で)「ログインに成功したら、2週間セッション・トークンを維持する」と言っているのです。ウェブ・ブラウザは、あなたのために行うよう依頼したHTTPリクエストごとに、こうしたログイン・クッキー(そしておそらく他のクッキーも)を送信します。
関連
-
[解決済み] RESTを理解する。動詞、エラーコード、認証
-
[解決済み] RESTアプリケーションはステートレスであることが前提である場合、セッションはどのように管理するのですか?
-
[解決済み] JSONウェブトークンの無効化
-
[解決済み] JAX-RSとJerseyでRESTトークンベースの認証を実装する方法
-
[解決済み】RESTウェブサービスを使用して、メタデータを含むファイルをアップロードするにはどうすればよいですか?
-
[解決済み】認証。JWTの使用とセッションの比較
-
[解決済み】すべてのASP.Netのウェブサイトが遅い理由を発見しました。
-
[解決済み】REST認証スキームの安全性
-
[解決済み] これを理解するのを助けてくれる?"よくあるRESTの間違い "です。セッションは無関係"
-
[解決済み】セッションは本当にRESTfulnessに違反するのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン