Rules を使用すると、パスワードレス接続 だけでは対応できない、より複雑なケースを処理できます。たとえば、メールアドレスやデバイスの所持をより確実に確認するための追加対策を講じることができます。
企業ネットワーク外のユーザーに多要素認証を必須にする
企業ネットワークの外部から 接続を使用してアプリケーションにアクセスするユーザーに対して、多要素認証 (MFA) を必須にしたいとします。
ルールを使用すると、ユーザーがパスワードレス方式 (sms、email) で認証しているかどうかを確認し、セッションの IP アドレスが指定した企業ネットワークの範囲外であれば、2 つ目の認証要素を要求できます。
現在の IP アドレスがユーザーの IP 許可リストに一致するかどうかや、ユーザーの位置情報から、ユーザープロファイルに記載された国とは異なる国にいることが判明したかどうかなど、ほかの条件に基づいてこのルールをトリガーすることもできます。
これを行うには、次のルールを作成します:
function(user, context, callback) {
const ipaddr = require('ipaddr.js');
const corp_network = "192.168.1.134/26";
const current_ip = ipaddr.parse(context.request.ip);
// 認証方式がパスワードレスで、かつIPが社内ネットワーク外か?
const passwordlessOutside = context.authentication.methods.find(
(method) => (
((method.name === 'sms') || (method.name === 'email')) &&
(!current_ip.match(ipaddr.parseCIDR(corp_network)))
)
);
// 該当する場合、MFAを要求する
if (passwordlessOutside) {
context.multifactor = {
provider: 'any',
allowRememberBrowser: false
};
}
callback(null, user, context);
}