Skip to main content
Authlete 2.x のドキュメントは 2.x 版をご覧ください。

概要

本ドキュメントでは、Authlete で FAPI の機能を利用するための具体的な方法について解説します。 Authlete は FAPI 1.0 と FAPI 2.0 の両方をサポートします。どちらの場合も、どのプロファイルを適用するかを Authlete に伝える方法は共通です。

各プロファイルの詳細

はじめに

Authlete がサポートする FAPI

Authlete は FAPI 1.0FAPI 2.0 の両方をサポートします。 FAPI 1.0 と 2.0 には、それぞれ複数のセキュリティープロファイルがあります。各セキュリティープロファイルにおける認可サーバーの要件は異なっており、どちらのプロファイルに従うかによって認可サーバーの振る舞いも異なります。 FAPI の機能を有効にするには、FAPI における要求事項を満たすようにサービスおよびクライアントを適切に設定したうえで、どのプロファイルを適用するかを Authlete に伝える必要があります。

プロファイルの指定方法

プロファイルの指定方法は 2 通りあります。 静的な設定を使うと、そのサービスまたはクライアントのすべてのリクエストに同じプロファイルが適用されます。準拠レベルの異なる複数のクライアントを 1 つの認可サーバーで収容する場合は、クライアントごとに「FAPI モード」を設定するか、スコープ属性による動的判定を使います。
「FAPI モード」はサービスとクライアントの設定項目で、Authlete 3.0 で追加されました。Authlete 2.x にはスコープ属性による動的判定のみがあります。

Authlete がプロファイルを決定する順序

Authlete は、リクエストごとに以下の順序で適用するプロファイルを決定します。先に条件を満たしたものが採用され、それ以降は評価されません。
  1. Authlete サーバーで FAPI 機能が有効でない場合、通常の OAuth 2.0 / OpenID Connect の仕様に従います。
  2. サービスの「指定可能なサービスプロファイル」で FAPI が有効でない場合、通常の OAuth 2.0 / OpenID Connect の仕様に従います。
  3. サービスの「FAPI モード」が設定されていれば、その値に従います。
  4. クライアントの「FAPI モード」が設定されていれば、その値に従います。
  5. リクエストに含まれる (あるいは関連付けられる) スコープの属性に従います。
  6. いずれにも該当しない場合、通常の OAuth 2.0 / OpenID Connect の仕様に従います。
サービスに「FAPI モード」を設定すると、そのサービスへのすべてのリクエストがそのモードで処理され、クライアントの「FAPI モード」とスコープ属性はいずれも参照されなくなります。クライアントごとに準拠レベルを分けたい場合は、サービスの「FAPI モード」を設定しないでください。

FAPI モードとスコープ属性の対応

fapi2 の値 baselineadvanced-jaradvanced-jarm は旧来の値で、現在は非推奨です。新たに設定する場合は上表の値を使用してください。

スコープ属性が複数のプロファイルを指す場合

スコープの属性は、リクエストに含まれる (あるいは関連付けられる) すべてのスコープから集めて評価されます。そのため、異なるプロファイルの属性を持つスコープが 1 つのリクエストに同時に含まれることがあります。 この場合、Authlete は以下の順序で判定します。先に該当したグループが採用され、それ以降は評価されません。 同時に適用されるのは 1 位のグループの中だけです。 FAPI 2.0 のメッセージ署名は、該当する属性を複数付与すれば複数が同時に適用されます。2 位から 4 位は、いずれか 1 つだけが採用されます。 たとえば、あるスコープが fapi = rw を、別のスコープが fapi2 = sp を持つリクエストでは、FAPI 2.0 セキュリティプロファイルだけが適用され、FAPI 1.0 アドバンスの属性は無視されます。
グループをまたいだ組み合わせはできません。FAPI 2.0 のメッセージ署名を指すスコープ属性が 1 つでも含まれていると、同じリクエストに fapi2 = spfapi = rw があってもそれらは評価されません。

FAPI に関する設定項目の場所

サービスの設定は、サービス設定の エンドポイント > 詳細設定 > FAPI タブにあります。「指定可能なサービスプロファイル (任意)」で FAPI プロファイルを有効にし、「FAPI モード」でこのサービスに適用するモードを選びます。「FAPI モード」で「FAPI 2.0 メッセージ署名」を選ぶと、「FAPI 2.0 メッセージ署名要件」で対象を選べるようになります。 サービス設定の「FAPI」タブ サービス設定の「FAPI」タブ クライアントの設定は、クライアント設定の エンドポイント > 詳細設定 > FAPI タブにあります。「FAPI 1.0 モード」と「FAPI 2.0 モード」があります。 クライアント設定の「FAPI」タブ クライアント設定の「FAPI」タブ スコープの属性は、サービス設定の トークン & クレーム > 詳細設定 > スコープ タブで設定します。

FAPI モードの組み合わせ規則

複数の FAPI モードを同時に指定できるのは、FAPI 2.0 のメッセージ署名同士の場合だけです。以下の 3 つは、それぞれ単独でのみ指定できます。
  • FAPI 1.0 Baseline
  • FAPI 1.0 Advanced
  • FAPI 2.0 セキュリティプロファイル
たとえば「FAPI 2.0 メッセージ署名 - 認可リクエスト」と「FAPI 2.0 メッセージ署名 - 認可レスポンス」は同時に指定でき、両方が有効になります。一方「FAPI 2.0 セキュリティプロファイル」と「FAPI 2.0 メッセージ署名 - 認可リクエスト」を同時に指定することはできません。 FAPI 1.0 の各プロファイルに必要な設定は FAPI 1.0 の設定 をご覧ください。FAPI 2.0 の設定は「各プロファイルの詳細」に挙げた各ページをご参照ください。