質問

つい先日、OAuth に関する記事を読みました。特に、一連のリクエスト中にクライアントとサービスプロバイダーの間で交換されるトークンについて説明しました。

この記事では、RESTful API で認証レイヤーとして OAuth が非常に人気があることにも言及しました。私が理解したように、REST は完全にステートレスに保つ必要があります。

質問:この繰り返されるトークン交換は、REST の「ステートレスである」原則を意味するものではありませんか?私の考えでは、トークンは一種のセッション ID と見なすことができますね。

役に立ちましたか?

解決

OAuth トークンは明示的にセッション識別子であり、リクエストは特定のシーケンスで実行する必要があるため、OAuth トークン ネゴシエーション プロトコルにおけるリクエスト間の対話はステートレスではありません。また、いつ行われたかを追跡する必要があるため、サーバー上にクライアントごとのストレージが必要です。それらは発行されました。はい、OAuth は RESTful アーキテクチャの厳密な原則に違反します。

残念ながらそこには現実の世界があるTM アプリケーションがパスワードを要求せずに個人に代わって認証できるようにするなどの対応が必要な場合に対応します。これは OAuth がかなりうまく機能します。この種の状態がなければ、同様に安全な認証スキームを実装することは不可能です。実際、OAuth (1.0a) で必要な変更の 1 つは次のとおりです。 もっと 状態をトークンネゴシエーションプロトコルに変更して、セキュリティリスクを軽減します。

では、それは REST のステートレス原則を台無しにするのでしょうか?はい。それは重要ですか?象牙の塔に住んでいない限りは別です:-)

他のヒント

認証は、Webの相互作用を扱う際に何らかの形で追跡しなければならない状態です。あなたのアプリが安らかであるかどうか最終的には場合、サーバーは、「認証された状態を」各ユーザーを追跡することができなければならないと、残念ながらそれはの上にHTTPの基礎となるステートレスな性質の迂回と(RESTなどの)任意の追加のトランスポート/技術のいくつかの種類が必要ですそれ。

このため、認証済みのアプリのいずれかの種類を開発するために、国家の原則は、靴のどこかにホーンドしなければならない、そしてそれはそうRESTの上でのOAuthであることを起こる場合は、それがなければなりませんどのようにthatsの!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top