For Authlete 2.x documentation, see 2.x version.
はじめに
本記事では、Authlete における RAR のサポートと、その機能を使って適切な粒度の権限を処理する方法を説明します。仕様の詳細については RAR 仕様の概要をご参照ください。設定
Authlete の RAR サポートを利用するためには、サービスとクライアントの双方に、認可詳細 (authorization_details) のタイプ (type) を設定する必要があります。- サービス: サポートする認可詳細タイプの追加
- クライアント: 利用できる認可詳細タイプの指定
サービスの設定
「サポート可能な認可詳細タイプ」の設定は、コンソールの各サービスの設定 → 「トークン&クレーム」 → 「詳細設定」 → 「スコープ」タブにあります。ただし、クライアントに対して自動的に利用可能になるものではありません。
クライアントの設定
クライアントが使用する「認可詳細タイプ」の設定は、コンソールの各クライアントの設定 → 「トークンとクレーム」 → 「詳細設定」 → 「スコープ」タブにあります。ここに設定したタイプが、クライアントからリクエスト可能な認可詳細タイプになります。
利用例
認可リクエスト
RAR は、そのまま URL エンコードされているか、リクエストがプッシュ(PAR)されているか、あるいはリクエストオブジェクト(JAR)のメカニズムが使われているかに関わらず、使用することができます。ただし、それらのメカニズムには特有の制約があります。RARのリクエストが非常に大きい場合、クライアントはPARを使用する必要があります。また、リクエストの改ざん検知(改ざんの証拠が残る状態)を確実にする必要がある場合は、リクエストオブジェクト(またはJAR)を使用すべきです。リクエスト
- URL エンコードされたリクエスト
- JAR でラップされたリクエスト
レスポンス
トークンリクエスト
ユーザーが承認した後に、認可サーバーは認可コードを生成し、それをクライアントへ返却します。クライアントは認可サーバーのトークンエンドポイントにアクセスします(必要であればそこでクライアント認証を受けます)。認可サーバーから呼び出された Authlete の /auth/token API は、アクセストークンと、もし openid スコープが指定されていれば ID トークンも生成します。リクエスト
レスポンス
トークンイントロスペクションリクエスト
アクセストークンを含む API リクエストを受信したリソースサーバーは、そのアクセストークンにどのような認可が与えられているかを確認するために、イントロスペクションエンドポイントを用います。リクエスト
以下は、リソースサーバーが認可サーバーに RFC 7662 準拠のトークンイントロスペクションを行い、そして認可サーバーが Authlete の /auth/introspection/standard API を呼び出す例です。レスポンス
認可サーバーは API レスポンスからresponseContent を抽出し、イントロスペクションレスポンスとしてリソースサーバーに返却します。このレスポンスには、アクセストークンにひもづく認可詳細 (authorization_details) が含まれています。リソースサーバーはこの内容をもとに、API リクエストを処理するか拒否するかを決定します。