この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
特定のユーザー向けにMFAをカスタマイズ
Auth0では、MFAを使用するようにマークされているユーザーのみに対して実行することが可能です。
例えば、従業員は不要/外部のパートナーは必要といったケースが考えられます。
この動作を行うには
- 多要素認証を常に必要トグルをオフ
- 特定のユーザーまたはアプリケーションのRuleを使用してMFAを有効にする
必要があります。
公式ドキュメント:多要素認証をカスタマイズする
1. 多要素認証を常に必要トグルをオフ
Auth0のダッシュボードの左ペインにある Multifactor Auth
をクリックし、 Always require Multi-factor Authentication
のトグルをオフにします。
2. Rulesの作成
Auth0のダッシュボードの左ペインにある Rules
をクリックし、 CREATE RULE
ボタンを押下します。
Pick a rule template
というルールのテンプレートを選択できる画面に遷移するので、 Empty Rule
というテンプレートを選択します。
Name
を入力し、Script
の部分は一旦そのままにして保存します。
3. Rulesの修正
先ほど作成したRuleを編集します。
ログイン対象ユーザーのapp_metadata
を参照し、MFAが必要かそうでないか判断するロジックを記述します。
以下の例だと、 partner
というグループに所属しているユーザーはMFA認証が行われます。
function (user, context, callback) {
// app_metadataにauthorization groupsがなかったらMFAは実行しない
if (!user.app_metadata || !user.app_metadata.authorization ||
!Array.isArray(user.app_metadata.authorization.groups)) {
return callback(null, user, context);
}
const groups = user.app_metadata.authorization.groups;
const GROUPS_WITH_MFA = {
// MFAが必要なグループ名を記述
'partner': true
};
const needsMFA = !!groups.find(function(group) {
return GROUPS_WITH_MFA[group];
});
if (needsMFA){
context.multifactor = {
provider: 'any', //required
// ユーザーはログイン時に常にMFAの入力を求められます。
allowRememberBrowser: false
// providerがgoogle-authenticatorまたはduo: ユーザーは30日ごとにMFAの入力を求められます
// providerが上記以外: ユーザーは今後30日間MFAをスキップするかどうかを決定できます
// allowRememberBrowser: true
};
}
callback(null, user, context);
}
4. Ruleをデバッグしてみる
3で修正したルールをデバッグすることが可能です。
ルールの編集画面の下部にある TRY THIS RULE
をクリックします
MFAが有効になるように、User
の部分を修正します。
TRY
ボタンを押すとレスポンスが返ってきます。
MFAが有効であれば、
"multifactor": {
"provider": "any",
"allowRememberBrowser": false
}
という情報が記述されています。
5. ユーザー情報を編集
実際のユーザーで動きを確認するため、ユーザー情報を修正してみます。
Auth0のダッシュボードの左ペインにある Users & Roles -> Users
をクリックし、 ユーザーを選択するか、新しいユーザーを作成します。
Metadata
の項目にあるapp_metadata
に以下の内容を追加し、保存します。
"authorization": {
"groups": [
"partner"
]
}
保存後、
任意のアプリケーションのログインURLにアクセスし、Auth0にログインしてみると、partner
を設定したユーザーはMFAが表示され、
そうでないユーザーは表示されずにリダイレクトURL先に遷移されると思います。
まとめ
このユーザーはMFA不要、このユーザーはMFAが必要といったケースを焦点にしました。
Auth0は多様なカスタマイズを行えるため、今回のようなMFAの有無をユーザーごとに変更することも容易に行えます。
ぜひ参考にしていただけると嬉しいです。