2.5. Financial-grade API (FAPI) サポート
Red Hat Single Sign-On を使用すると、管理者はクライアントが以下の仕様に準拠していることを簡単に確認できます。
このコンプライアンスは、Red Hat Single Sign-On サーバーが、これらの仕様に記載されている認可サーバーの要件を検証することを意味します。Red Hat Single Sign-On アダプターには FAPI を特別にサポートしていないため、クライアント (アプリケーション) 側での必要な検証は、引き続き手動で行うか、その他のサードパーティーソリューションを介して実行する必要がある場合があります。
2.5.1. FAPI クライアントプロファイル
クライアントが FAPI に準拠することを確認するには、Server Administration Guide の説明に従って、レルムにクライアントポリシーを設定し、そのポリシーを各レルムで自動的に利用できる FAPI サポートのグローバルクライアントプロファイルにリンクします。クライアントが準拠する必要のある FAPI プロファイルに基づいて、fapi-1-baseline
または fapi-1-advanced
プロファイルのいずれかを使用できます。
Pushed Authorization Request (PAR) を使用する場合は、クライアントが fapi-1-baseline
プロファイルおよび fapi-1-advanced
の両方を PAR 要求に使用することが推奨されます。具体的には、fapi-1-baseline
プロファイルには、pkce-enforcer
エグゼキューターが含まれています。これにより、クライアントはセキュリティーで保護された S256 アルゴリズムで PKCE を確実に使用します。これは、PAR 要求を使用しない限り、FAPI Advanced クライアントには必須ではありません。
FAPI に準拠する方法で CIBA を使用する場合は、クライアントが fapi-1-advanced
および fapi-ciba
クライアントプロファイルの両方を使用していることを確認してください。fapi-ciba
プロファイルには CIBA 固有のエクゼキューターのみが含まれるため、fapi-1-advanced
プロファイル、または要求されたエクゼキューターを含む他のクライアントプロファイルを使用する必要があります。FAPI CIBA 仕様の要件を実施する場合は、機密クライアントまたは証明書をバインドしたアクセストークンの適用など、より多くの要件が必要になります。
2.5.2. Open Banking Brasil Financial-grade API Security Profile
Red Hat Single Sign-On は、Open Banking Brasil Financial-grade API Security Profile 1.0 Implementers Draft 2 に準拠しています。これは、一部の要件では FAPI 1 Advanced 仕様よりも厳格であるため、一部の要件を適用するには、より厳格な方法で Client Policies を設定する必要がある場合があります。以下の場合は、特にその必要があります。
-
クライアントが PAR を使用しない場合は、暗号化された OIDC 要求オブジェクトが使用されていることを確認してください。これは、
Encryption Required
を有効にして設定されたsecure-request-object
エグゼキューターを持つクライアントプロファイルを使用して実現できます。 -
JWS の場合は、クライアントが
PS256
アルゴリズムを使用していることを確認してください。JWE の場合、クライアントはA256GCM
によるRSA-OAEP
を使用する必要があります。これは、これらのアルゴリズムが適用可能なすべての Client Settings で設定する必要がある場合があります。
2.5.3. TLS に関する考慮事項
機密情報が交換されるため、すべての対話は TLS (HTTPS) で暗号化される必要があります。さらに、使用される暗号スイートおよび TLS プロトコルバージョンの FAPI 仕様にはいくつかの要件があります。これらの要件に合致するには、許可された暗号を設定することを検討してください。この設定は、Elytron サブシステムの KEYCLOAK_HOME/standalone/configuration/standalone-*.xml
ファイルで実行できます。たとえば、この要素は tls
server-ssl-contexts
の下に追加できます。
<server-ssl-context name="kcSSLContext" want-client-auth="true" protocols="TLSv1.2" \ key-manager="kcKeyManager" trust-manager="kcTrustManager" \ cipher-suite-filter="TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" protocols="TLSv1.2" />
<server-ssl-context name="kcSSLContext" want-client-auth="true" protocols="TLSv1.2" \
key-manager="kcKeyManager" trust-manager="kcTrustManager" \
cipher-suite-filter="TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" protocols="TLSv1.2" />
kcKeyManager
および kcTrustManager
への参照は、対応するキーストアおよびトラストストアを参照します。詳細については、Wildfly Elytron サブシステムのドキュメントを参照してください。また、Network Setup Section または X.509 Authentication Section などの Red Hat Single Sign-On ドキュメントの他の部分も参照してください。