ユーザーアイコン

mizuko

5日前

0
0

Auth0経由でAzure ADのスコープを動的に変更できない制約について

Auth0
Azure AD

Auth0とAzure AD(Microsoft Entra ID)を連携させる際、フロントエンドから動的にMicrosoft Graph APIのスコープ(Mail.Read、Mail.ReadWriteなど)を追加することができない。

技術的制約の詳細

upstream_paramsの仕組み

Auth0のconnection設定におけるupstream_paramsは、Identity Provider(IdP)に送るパラメーターを定義する。これには静的パラメーターと動的パラメーターの2種類がある。

静的パラメーター

"upstream_params": { "scope": { "value": "openid profile email Mail.Read" } }

動的パラメーター

"upstream_params": { "screen_name": { "alias": "login_hint" } }

scopeが動的に変更できない理由

動的パラメーターはalias属性を使用して、Auth0の/authorizeエンドポイントに送られたパラメーターをIdPのパラメーターにマッピングする。しかし、使用可能なaliasは以下に限定される:

  • acr_values
  • audience
  • client_id
  • display
  • id_token_hint
  • login_hint
  • max_age
  • prompt
  • resource
  • response_mode
  • response_type
  • ui_locales

scopeはこのリストに含まれていないため、実行時の動的変更は不可能。

フロントエンドのauthorizationParamsとの違い

// これはAuth0のトークンに対するscope(Azure ADには送られない) loginWithRedirect({ authorizationParams: { scope: "Mail.Read Mail.ReadWrite" } });

実際にAzure ADに送られるscopeは、Terraformやconnection設定で定義されたupstream_paramsの値となる。

参考資料