
Auth0を使ってZendeskのユーザー属性を追加してみました
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
コンニチハ、千葉県民です。
上記記事の続きであります。
ZendeskがSAML認証システムに求めるユーザーデータは、ユーザーの姓名とメールアドレスだけですが、
より多くのデータを追加で渡してみようと思います。
Zenデスク公式の情報によると、サポートしているユーザー属性は
追加のユーザーデータを取得する に記載されているもの
と
InCommon Federation Attributes
とのことです。
本記事では追加属性を以下に決めてZendeskに連携してみます。
organizations
: ユーザーが所属する組織の名前またはIDphone
: 文字列として指定された電話番号,role
: ユーザーのロール。end-user、agent、またはadminを設定できます,tags
: ユーザーに設定されているタグ。これらのタグは、ユーザープロフィール内にすでにタグがある場合、それらのタグを上書きします,remote_photo_url
: ユーザープロフィールに設定される写真のURLuser_field_graphic_board
: Zendesk Supportのカスタムユーザーフィールドの値
前回の記事で作成したSSO integrationによりAuth0を使用したSAMLログインできるようになっているので、 ログイン処理をカスタマイズして属性を追加してみましょう。
Auth0でSAMLの設定をカスタマイズする方法にはRulesを使用します。 ※ 執筆時点で、Actionsでは出来なそうでした(ドキュメントに記載がない)
追加属性ですが、今回はやりやすいようにuser_metadataに指定します。
Auth0ダッシュボードにログインし、ユーザーの編集画面から設定しましょう。
(user_metadataの例)
{
"organizations": [
"ロンド・ベル"
],
"phone": "01203335555",
"role": "admin",
"tags": [
"ジェガン",
"バンシィ"
],
"user_field_graphic_board": "GeForce GTX 1660 SUPER VENTUS XS OC",
"givenname": "亮介",
"surname": "森"
}
user_metadataを追加した後は、 Ruleを作成し、中身を以下のようにします
function (user, context, callback) {
if(context.clientID !== '<<前回の記事で作成したSSOインテグレーションのclient id>>'){
return callback(null, user, context);
}
user.user_metadata = user.user_metadata || {};
const organizations = user.user_metadata.organizations.join(',');
const tags = user.user_metadata.tags.join(',');
user.organizations = organizations;
user.tags = tags;
context.samlConfiguration.mappings = {
"organizations": "organizations",
"phone": "user_metadata.phone",
"role": "user_metadata.role",
"tags": "tags",
"remote_photo_url": "picture",
"user_field_graphic_board": "user_metadata.user_field_graphic_board",
};
return callback(null, user, context);
}
※ エラーハンドリングをしていないので注意
この状態で再度Zendeskにログインすると、追加した属性でZendeskのユーザー情報が更新されます。
Before
after
どういったSAMLのやりとりがされたかは、SAML-tracerで確認できます。
Auth0のRule(NodeJS)を使って柔軟にカスタマイズできるので、別のDBに蓄積した顧客の属性なんかもZendeskに連携できます。
是非試してみてください