[解決済み] OAuth v2による認証サーバーとリソースサーバー間のコミュニケーション
質問
OAUTH-v2がどのように機能するか理解するのに苦労しています。
その OAuth バージョン 2 仕様 を読み取ります。
保護されたリソースへのアクセス
クライアントは、保護されたリソースにアクセスするために リソースにアクセスするために
トークンをリソースサーバに提示します。 リソースサーバーは を検証しなければなりません。
アクセストークンを検証し、それが有効期限内であること 有効期限が切れていないこと、そしてそのスコープが
をカバーすることを確認します。 リソースサーバーが にリソースサーバが使用するメソッドです。
アクセストークンを検証するためにリソースサーバが使用するメソッド(および を検証するために使用されるメソッドです。 を超えています。 この仕様の範囲外です。 ですが 一般に リソース間の相互作用や リソースサーバーと認証サーバーの間の サーバと認可
サーバ .
リソースサーバーと認可サーバーの間のこの相互作用は、実際にはどのように機能するのでしょうか?
- リソースサーバーはどのようにして 受け取ったアクセストークンが有効であることを どのように判断するのですか?
- リソースサーバーはどのようにして リソースサーバーはどのように許可された スコープをどのように抽出するのでしょうか?スコープはアクセストークンにエンコードされているのか、それともリソースサーバーが最初に認証サーバーにコンタクトしなければならないのか?
- リソースサーバーと認証サーバーの間の信頼はどのように確立されますか?
アクセストークンの属性と 保護されたリソースへのアクセスに使用されるメソッド リソースにアクセスするために使用されるメソッドは の範囲外です。 仕様の範囲外です。 で定義されており で定義されています。
どなたかトークン属性の例を教えてください。
どのように解決するのですか?
これが仕様の範囲外である理由は、この 2 つのエンティティ間の接続を実現する方法が多岐にわたるためです。主な問題は、展開がどれほど複雑であるかということです。
たとえば、認証とアクセスを管理する1つのサーバーと、APIコールを提供する独自のサーバーを持つ個別のサービスのセットがそれぞれあるのでしょうか。または、認証/認可と API 呼び出しの両方を処理する 1 つの Web サーバーを備えた 1 つのボックスがあるだけでしょうか。
単一のボックスの場合、トークンを発行するエンティティはそれらを検証するものと同じであるため、あまり必要ではありません。データベースのテーブルキーを使用して、リクエストごとにデータベース (またはメモリキャッシュ) のレコードを検索するようにトークンを実装することもできますし、スコープ、ユーザー ID、その他の情報を直接トークンにエンコードして、対称または非対称アルゴリズムを使用して暗号化することもできます。
分散環境を扱うときは少し複雑になりますが、それほど大きな差はありません。認証サーバでトークンを発行することに変わりはありませんが、リソースサーバはそれを検証する方法が必要です。リソースサーバーが内部APIを利用できるようにして、認証サーバーにトークンの解決(ローカル環境では高速)を依頼するか、または公開/秘密鍵ペアまたは共通鍵を確立して、リソースサーバーが必要とするすべてをトークンに暗号化して使用することが可能です。
自己完結型トークンはより長いですが、リクエストごとのパフォーマンスははるかに優れています。しかし、その代償として、有効期間内(期限切れでない)であれば、実際に取り消すことができないのです。このため、自己完結型トークンは非常に短命であるべきで、(取り消した後にアクセスを開いたままにするために許容できる範囲であれば何でもよく、たとえば多くのサイトでは 1 時間を使っています)新しいトークンを取得するために 1 年以上有効なリフレッシュ トークンを持つべきです。
関連
-
[解決済み] OpenIDとOAuthの違いは何ですか?
-
[解決済み] JWT認証とOAuth認証の主な違いは何ですか?
-
[解決済み】OAuth2の「暗黙の」フローはとてもうまく機能しているのに、なぜ「認証コード」フローがあるのですか?
-
[解決済み】OAuth2.メリットとユースケース - なぜ?
-
[解決済み】OAuth 2の暗黙のグラント承認タイプの目的は何ですか?
-
[解決済み】OAuth 2.0 Bearer Tokenとは、具体的にどのようなものですか?
-
[解決済み】OAuth 2は、Security Tokenを使用したリプレイ攻撃などからどのように保護するのでしょうか?
-
[解決済み] OAuth Authorization CodeとImplicitワークフローの違いは何ですか?それぞれを使用するタイミングは?
-
[解決済み] リソースサーバーのOAuth 2.0アクセストークンを検証する方法とは?
-
[解決済み] OAuthの認可と認証
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Spring RestTemplateクライアント - 接続拒否例外
-
[解決済み] Outlook.comでは、Webhook/push通知のサポートはありますか?
-
[解決済み] RESTとRPCのWebサービスの違い
-
[解決済み] RESTを理解する。動詞、エラーコード、認証
-
[解決済み】XSDとWSDLの違いは何ですか?
-
[解決済み] なぜSOAPベースのサービスではなく、RESTを使うのか?[クローズド]
-
[解決済み] Delphi XE用SOAPサーバー&クライアントアプリケーションVCL+Indyデモ?
-
[解決済み] リアルライフトレーディングAPI【クローズド
-
[解決済み] GoのWebサーバーの前にNginxを使うメリットは何ですか?
-
[解決済み] RESTfulなWebサービスを保護するには?