FAPI モードにおける追加検証項目


概要


バージョン 2.0 以降、Authlete は Financial-grade API Security Profile 1.0 (FAPI 1.0) をサポートしています。FAPI 1.0 は Baseline (Financial-grade API - Part 1: Read Only API Security Profile) と Advanced (Financial-grade API - Part 2: Read and Write API Security Profile) に分かれており、どちらに従うかによって Authlete の振る舞いも異なります。
ここでは、標準の OAuth 2.0 および OpenID Connect 用の検証項目に加えて、FAPI 1.0 Baseline/Advanced において追加実行される検証項目について説明します。


 認可エンドポイント


1. response_type リクエストパラメーター


Baseline
チェック無し
Advanced
 JARM が使われていない限り、response_type リクエストパラメーターの値は "code id_token" もしくは "code id_token token" のいずれかでなければならない。



2. redirect_uri リクエストパラメーター


Baseline
redirect_uri リクエストパラメーター必須
Advanced
同上



3. リダイレクト URI のスキーム


Baseline
リダイレクト URI のスキームは https でなければならない。
Advanced
同上



4. リダイレクト URI の検証


Baseline
登録済みのリダイレクト URI に完全一致しなければならい。部分一致は不可。
Advanced
同上



5. state リクエストパラメーター


Baseline
scope リクエストパラメーターに openid が含まれていなければ、state リクエストパラメーター必須。
Advanced
同上



6. nonce リクエストパラメーター


Baseline
認証されたユーザーの識別子が要求されている場合、nonce リクエストパラメーター必須。
Advanced
同上



7. リクエストオブジェクト


Baseline
チェック無し
Advanced
認可リクエストでリクエストオブジェクトを用いなければならない。すなわち、request リクエストパラメーターもしくは request_uri リクエストパラメーターが必須。



8. リクエストオブジェクトの署名


Baseline
チェック無し
Advanced
リクエストオブジェクトは署名されていなければならない。



9. リクエストオブジェクト外のリクエストパラメーター群


Baseline
チェック無し
Advanced
リクエストオブジェクト外にあるリクエストパラメーター群は、全てリクエストオブジェクトの中にも重複して入れておかなければならない。



10. リクエストオブジェクト内の exp クレーム


Baseline
チェック無し
Advanced
リクエストオブジェクトに exp クレームが含まれていなければならない。



11. リクエストオブジェクト内の aud クレーム


Baseline
チェック無し
Advanced
リクエストオブジェクトに aud クレームが含まれていなければならない。その値は、OpenID プロバイダーの識別子と一致、もしくは当該識別子を含む配列でなければならない。



12. リクエストオブジェクトの署名アルゴリズム


Baseline
チェック無し
Advanced
PS256 もしくは ES256



13. code_challenge リクエストパラメーター


Baseline
code_challenge リクエストパラメーター必須。
Advanced
クライアントタイプが public の場合、code_challenge リクエストパラメーター必須。



14. code_challenge_method リクエストパラメーター


Baseline
code_challenge_method リクエストパラメーターの値は S256 でなければならない。plain 不可。
Advanced
クライアントタイプが public の場合、code_challenge_method リクエストパラメーターの値は S256 でなければならない。plain 不可。



15. ACR を essential として要求


Baseline
チェック無し
Advanced
ACR を essential として要求しなければならない。




16. レスポンス JWT の署名アルゴリズム


Baseline
チェック無し
Advanced
PS256 または ES256。クライアントのメタデータ authorization_signed_response_alg の値をどちらかにする。



17. ID トークンの署名アルゴリズム


Baseline
チェック無し
Advanced
PS256 または ES256。クライアントのメタデータ id_token_signed_response_alg の値をどちらかにする。




トークンエンドポイント


18. クライアント認証方式


Baseline
次のいずれか
  • tls_client_auth
  • self_signed_tls_client_auth
  • client_secret_jwt
  • private_key_jwt
Advanced
次のいずれか
  • tls_client_auth
  • self_signed_tls_client_auth
  • private_key_jwt



19. クライアントアサーションの署名アルゴリズム


Baseline
チェック無し
Advanced
PS256 または ES256



20. クライアントアサーションの鍵サイズ


Baseline
鍵のサイズは、アルゴリズムが RSA 系であれば 2048 ビット以上、楕円曲線系であれば 160 ビット以上が必須。
Advanced
同上



21. ID トークンの署名アルゴリズム


Baseline
チェック無し
Advanced
PS256 または ES256。クライアントのメタデータ id_token_signed_response_alg の値をどちらかにする。



22. Mechanism for sender-constraining access tokens


Baseline
チェック無し
Advanced
MTLS (Certificate Binding) を mechanism for sender-constraining access tokens として用いなければならない。

ユーザー情報エンドポイント


23. ユーザー情報レスポンスの署名アルゴリズム


Baseline
チェック無し
Advanced
ユーザー情報レスポンスに署名が行われる場合(クライアントのメタデータ userinfo_signed_response_alg が未設定ではない場合)、そのアルゴリズムは PS256 または ES256 でなければならない。




参考情報


How did we do with this article?