Auth0のActionsでログイン時のIPアドレスを制限してみた
2021年5月14日にAuth0でActionsがGAされました。Actionsは元々提供されていたRulesとHooksを統合して使いやすくした機能です。ログイン時やアカウント登録時など様々なタイミングで順番に複数のカスタムスクリプトを実行することが出来ます。
本記事ではログイン時のIPアドレス制限を実際にやってみます。
カスタムスクリプトを実装
まずはIPアドレス制限のカスタムスクリプトを実装します。ActionsのCustom Actionsから新しいアクションを作成します。
カスタムスクリプトを実装してデプロイします。IPアドレス制限では次のようなスクリプトになります。event.client.name
は対象のアプリケーション名に変更してください。
exports.onExecutePostLogin = async (event, api) => { if (event.client.name === "My App") { if (event.request.ip !== "xxx.xxx.xxx.xxx") { api.access.deny(`Access to ${event.client.name} is not allowed. IP Address access restrictions.`); } } };
フローを実装
カスタムスクリプトを実行させるタイミングを選択します。ログイン時にカスタムスクリプトを実行させて、IPアドレスを制限したいので「Login」を選択します。
ログインのフロー画面で、右側のリストから先程作成したIPアドレス制限のActionをドラッグ&ドロップで追加します。ここでは他の複数のスクリプトを追加することも出来ます。また、追加されたスクリプトは上から順に実行されます。最後に忘れずに右上のApplyボタンを押して設定を反映しましょう。
動作確認
実際にアプリでログインを行います。IPアドレス制限のカスタムスクリプトで指定したIPアドレス以外からログインしようとすると、ログインに失敗することを確認できました。また、ログインに失敗した際には、Auth0のMonitoringからログを確認することが出来ます。
まとめ
たったの5分程度で簡単にIPアドレス制限を実装することができました。自前のサーバーを用意すること無く、Auth0のサーバー上でカスタムスクリプトを実行させられるのはとても便利です。
また、今まで分かれていたRulesとHooksの機能が統合されて、スクリプトの実行順序も視覚的に管理できるようになったことで、より分かりやすく設定を調整できるようになったと思います。