OpenID FAPI認定テストに合格するようにAuth0を構成する
このセクションには、OpenID FAPI適合性テストを使用してソリューションをテストする場合にクライアントを構成する方法に関するアドバイスが含まれています。
OpenID FAPI適合性テストに合格するには、まず次の設定を行います。
compliance_level
プロパティを、fapi1_adv_pkj_par
またはfapi1_adv_mtls_par
のいずれかの目的のプロファイルに設定します
次に、以下の手順に従ってOpenID FAPI適合テストの構成を完了します。
Auth0がユーザーに同意を求めることを確認する
Auth0がユーザーに同意を求めることを確認する必要があります。クライアントがファーストパーティアプリとして構成されており、リソースサーバーまたはAPIがファーストパーティアプリの同意のスキップをサポートしている場合は、この手順をスキップできます。Auth0がユーザーに同意を求めるようにするには、クライアントのis_first_party
プロパティをfalse
に設定します。
curl --location --request PATCH 'https://$tenant/api/v2/clients/$client_id' \
--header 'Authorization: Bearer $management_access_token' \
--header 'Content-Type: application/json' \
--data-raw '{
"is_first_party": false
}'
Was this helpful?
次に、以下のように接続をドメインレベルに昇格します。
curl --location --request PATCH 'https://$tenant/api/v2/connections/$connection_id' \
--header 'Authorization: Bearer $management_access_token' \
--header 'Content-Type: application/json' \
--data-raw '{
"is_domain_connection": true
}'
Was this helpful?
テナントに対してサポートされているACRクレームを構成します
FAPIテストは、urn:mace:incommon:iap:silver
の必須ACR値を渡します。IDトークンに必要なACR値を含めるには、以下のようにテナントでサポートされているACR値のリストにurn:mace:incommon:iap:silver
を追加します。
curl --location --request PATCH 'https://$tenant/api/v2/tenants/settings' \
--header 'Authorization: Bearer $management_access_token' \
--header 'Content-Type: application/json' \
--data-raw '{
"acr_values_supported": ["urn:mace:incommon:iap:silver"]
}'
Was this helpful?
JWKSエンドポイントからalgプロパティを削除します
キーをRS256だけでなく複数のアルゴリズムで使用できるようにするには、/.well-known/jwks.json
エンドポイントの出力からテナントのalg
プロパティを削除します。
curl --location --request PATCH 'https://$tenant/api/v2/tenants/settings' \
--header 'Authorization: Bearer $management_access_token' \
--header 'Content-Type: application/json' \
--data-raw '{
"flags": {
"remove_alg_from_jwks": true
}
}'
Was this helpful?
スコープとredirect_uriを要求するアクションを追加します
デフォルトでは、Auth0はスコープのない要求を許可します。スコープが存在しない場合は、openid
スコープであると想定します。Auth0は、アクションで設定できるredirect_uri
のない要求も許可します。ただし、FAPI適合テストでは、Auth0の制限を強化する必要があります。
次のアクションを追加して、スコープとredirect_uri
に必要な制限を適用します。
exports.onExecutePostLogin = async (event, api) => {
if (!event.request.body || !event.request.body.refresh_token) {
// Require a scope
if (!event.request.query.scope) {
api.access.deny('scope must be provided in the request');
}
// To improve the error message if redirect_uri is not present
if (!event.request.query.redirect_uri) {
api.access.deny('redirect_uri must be provided in the request');
}
}
};
Was this helpful?