はじめに
前回の記事でAPIを利用したAuth0のユーザー登録をやってみましたが
ユーザー登録は ManagementAPIで行い、ログイン画面はUniversal Loginを利用する場合はUniversal Loginから新規登録をできないように設定しておきたいかと思います。
今回はUniversal Loginから新規登録ができないように設定をしてみました。
Database Connections設定
新規登録をできないようにするにはUniversal Loginの設定ではなくデータベースの設定を変更する必要があります。
Auth0の管理画面を開いてデータベースの設定を開きます。
データベース設定の中のDisable Sign Ups
を以下のようにONにします。
この設定だけでUniversal LoginからSignUpの選択肢が消えます。
Classicの場合は以下のようにLogin、SignUpのタブが消え、ログインのみが可能になります。
Newの場合は下のほうに表示されていたSingUpのリンクが消えます。
ソーシャルログインによる新規登録の無効化
ここまでの手順でAuth0のデータベースに対する新規登録は無効化することができましたが
これだけだとソーシャルログインによるユーザーの登録を防ぐことはできません。
ソーシャルログインしてきたユーザーがデータベースに存在しない場合はユーザーが作成されてしまいます。
ソーシャルログインを利用しつつ、ソーシャルログインによる新規登録は防ぎたい場合はRulesを使って制御します。
Rulesのテンプレートの中からDisable social signups
を選択してRulesを追加します。
このRulesを追加した状態でソーシャルログインによる新規登録を行うとエラーが返却されるので
アプリケーション側でエラーハンドリングをしてください。(エラーの詳細はDisable social signups
のコードを参照してください。)
ソーシャルログインによる新規登録を無効化するときの注意点
ソーシャルログインによる新規登録の無効化のほうはRulesを使った制御になっているので
データベース設定での新規登録の無効化とは違い、実はデータベース上にユーザーが作成されてしまいます。
Rulesの中でソーシャルログインによる新規登録が行われたユーザーはapp_metadata
にis_signup
というプロパティが追加されており、これがtrue
に場合にログインエラーとしているだけです。
もしもDisable social signups
のRulesでエラーとなっているユーザーのログインを許可したい場合は
app_metadata
のis_signup
プロパティを削除してください。
おわりに
ユーザー登録をManagementAPIや管理画面からの操作だけでやりたい場合は
Universal Loginからの新規登録の無効化もぜひ一緒にやってみてください。