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種類がある。
静的パラメーター:
json
"upstream_params": {
"scope": {
"value": "openid profile email Mail.Read"
}
}動的パラメーター:
json
"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との違い
javascript
// これはAuth0のトークンに対するscope(Azure ADには送られない)
loginWithRedirect({
authorizationParams: {
scope: "Mail.Read Mail.ReadWrite"
}
});実際にAzure ADに送られるscopeは、Terraformやconnection設定で定義されたupstream_paramsの値となる。