Azure ADログインをした時、Actionsでアクセスできない属性があった[Auth0]
Azure ADでのエンタープライズログインをAuth0で有効にしてアプリケーションに組み込むサンプルを作っていたときにハマった現象。
上記のようにAuth0のAzure AD設定画面でExtended Attributesにチェックを入れていると、サインインユーザーの拡張属性にアクセスできるとドキュメントに書かれています。
Actionsからのアクセス
ユーザーに紐づくグループの情報を取得してIDトークンに付与しようと考えていたので、Actionsで以下のコードを書いて対応しようとしました。
exports.onExecutePostLogin = async (event, api) => { const namespace = 'https://<<ネームスペース>>'; if (event.authorization) { api.idToken.setCustomClaim(`${namespace}/groups`, event.user.groups); } };
ログイン時のActionsではユーザーの情報をevent.user
で取得できます。
※ Actions Triggers: post-login - Event Object
Auth0の管理コンソールのエディタに書いたコードを貼り付けたところ
そんなプロパティはないよと警告が出てしまいました。
試しに実行してコンソールログで中をみたところ、undefined
でした。
event.userにはidentitiesというプロパティもあるので、ここに入ってるのか?と思いコンソールログしてみると、
{ connection: 'azure-test', isSocial: false, provider: 'waad', userId: '<<ユーザーID>>', user_id: '<<ユーザーID>>' }
といった情報しか入っていませんでした。
管理コンソールからユーザー情報を見ると
groups
はちゃんと入ってます。
Actionsではまだできない?
Rulesからアクセス
Rulesならどうだろうと思って、userの情報をコンソールログしてみました。
※ User Object Properties in Rules
コード:
function (user, context, callback) { // TODO: implement your rule console.log(user); console.log("user.group: " + user.groups); return callback(null, user, context); }
ログ:
なんとこっちはgroups
にアクセスできて値も取得できました。
他の属性
Azure ADの他の属性もRulesでは取得できてActionsではできないものがあるようです。
コンソールログの出力だけでしか確認していませんが、
- .identities.access_token
- .identities.expires_in
- .identity_api
- .oid
- .tenantid
- .groups
- .upn
- .preferred_language
- .phone
この辺りはRulesでアクセスできますが、Actionsではアクセスできなそうでした。
今回のようにActionsでは対応できなくてもRulesでは対応できる ということがあるので、このことは頭に入れておきたいと思います