OpenID FAPI認定テストに合格するようにAuth0を構成する

このセクションには、OpenID FAPI適合性テストを使用してソリューションをテストする場合にクライアントを構成する方法に関するアドバイスが含まれています。

OpenID FAPI適合性テストに合格するには、まず次の設定を行います。

次に、以下の手順に従って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?

/

もっと詳しく