Azure ADログインをした時、Actionsでアクセスできない属性があった[Auth0]

Azure ADログインをした時、Actionsでアクセスできない属性があった[Auth0]

Clock Icon2022.03.18 06:10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Azure ADでのエンタープライズログインをAuth0で有効にしてアプリケーションに組み込むサンプルを作っていたときにハマった現象。

上記のようにAuth0のAzure AD設定画面でExtended Attributesにチェックを入れていると、サインインユーザーの拡張属性にアクセスできるとドキュメントに書かれています。

Auth0でエンタープライズ接続を作成

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では対応できる ということがあるので、このことは頭に入れておきたいと思います

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.