Web用の埋め込みログインは、クロスオリジン認証を使用します。一部のブラウザーでは、カスタムドメインを設定して同じドメインにアプリをホスト しないと、クロスオリジン認証の信頼性が欠ける可能性があります。カスタムドメインを使用できない場合は、ユニバーサルログインへの移行を検討してください。
Lockのインストール
Lockのインストールには、いくつかの方法があります。環境とアプリケーションに合ったインストールソースを以下から選択してください。インストールソース
npmを介してインストールする:npm install auth0-lock
bowerを介してインストールする:
bower install auth0-lock
CDNを介してインクルード(.x
と.y
をLock Githubリポジトリからの最新のマイナーリリース番号とパッチリリース番号に置き換える):
最新のマイナーリリース:<script src="https://cdn.auth0.com/js/lock/11.x/lock.min.js"></script>
最新のパッチリリース:
<script src="https://cdn.auth0.com/js/lock/11.x.y/lock.min.js"></script>
運用アプリケーションで指定のパッチバージョン、または、最低でも指定のマイナーバージョンを使用することをお勧めします。Lockをどのようにしてインクルードしたかにかかわらず、バージョンをロックダウンしてアップデートを手動でのみ行うようにし、アップデートによる悪影響を防ぐことをお勧めします。GitHubリポジトリで現在のリリース一覧を確認します。
モバイル
モバイルのオーディエンスを対象にしている場合は、次のメタタグをアプリケーションのhead
に追加することをお勧めします。
<meta name="viewport" content="width=device-width, initial-scale=1"/>
依存関係のバンドル
browserifyまたはwebpackを使ってプロジェクトをビルドし、その依存関係をバンドルする場合、auth0-lock
モジュールをインストールした後に、そのすべての依存関係とバンドルする必要があります。Browserifyとwebpackを使用した例が用意されています。
クロスオリジン認証
Web用の埋め込みログインは、クロスオリジン認証を使用します。一部のブラウザーでは、カスタムドメインを設定して同じドメインにアプリをホスト しないと、クロスオリジン認証の信頼性が欠ける可能性があります。カスタムドメインを使用できない場合は、ユニバーサルログインへの移行を検討してください。
使用
1. Lockの初期化
まず、新しいAuth0Lock
オブジェクトを初期化し、そのオブジェクトにAuth0クライアントID(Auth0アプリケーションごとに一意のクライアントIDで、管理ダッシュボードから入手可能)とAuth0ドメイン(yourname.auth0.com
など)を提供する必要があります。
codeblockOld.header.login.logInButton codeblockOld.header.login.configureSnippet
2. ユーザー情報の認証と取得
次に、on
メソッドを使ってauthenticated
イベントをリッスンします。イベントが発生したら、accessToken
を使用します。これは、getUserInfo
メソッドを呼び出し、ユーザーのプロファイル情報を(必要に応じて)取得するために受け取ったものです。
codeblockOld.header.login.logInButton codeblockOld.header.login.configureSnippet
<h2>Welcome <span id="nick" class="nickname"></span></h2>
ユーザープロファイルを保存する場合は、プロファイルオブジェクトにJSON.stringify
を適用し、後で使用する場合はJSON.parse
を適用します。これは、JSONオブジェクトでなく文字列としてlocalStorage
に保存する必要があるからです。
3. Lockの表示
ここでは、ユーザーが[ログイン]ボタンをクリックしたときにLockウィジェットが表示されるようにしています。ページに移動した時点で自動的にLockを表示したいときは、ページの読み込み時にlock.show();
を使用します。
これでLockウィジェットが表示されるようになります。上記の手順も完了し、ログインを処理する準備が整いました!
パスワードレス
Lockでは、Lock v11.2.0以降でのみパスワードレスモードが用意されています。この機能にはLockの最新リリースを使用してください。 Lockのパスワードレスモードを使うと、ユーザーがメールアドレスや携帯電話番号だけで認証できるようになります。ユーザーにコードが送信され、それを入力するか、リンクをクリックするだけで認証できるため、パスワードを覚える必要がありません。 Lockでパスワードレスモードを実装するには、Auth0Lock
でなくAuth0LockPasswordless
を使って、Lockを若干異なる方法で初期化します。
codeblockOld.header.login.logInButton codeblockOld.header.login.configureSnippet
パスワードレスのオプション
また、Lockのパスワードレスモードには、専用の構成オプションがいくつかあります。 使用したい接続タイプを示すには、allowedConnections
オプションでLockを初期化し、email
かsms
のいずれかを値に使用します。
email
を使用することを選んだ場合は、ユーザーに入力コードとマジックリンクのどちらを送信するかも指定しなければなりません。これは、passwordlessMethod
オプションを介して行われます。このオプションは、code
またはlink
の値をとります。
パスワードレスの例
シングルサインオンと埋め込み認証
埋め込みログインのあるアプリがシングルサインオン()を使用するには、2つの条件を満たす必要があります。- SSOを行おうとするアプリケーションの両方が、ファーストパーティーのアプリケーションでなくてはなりません。サードパーティーのアプリケーションではSSOが動作しません。
- カスタムドメインを使用していること、SSOを実装しようとしているアプリケーションとAuth0テナントが同じドメインにあることが必要です。従来、Auth0ドメインの形式は
foo.auth0.com
ですが、カスタムドメインを使用すると、該当するすべてのアプリケーションとAuth0テナントに同じドメインを使用してCSRF攻撃のリスクを回避できます。
エラーコードと説明
Lockを埋め込み型ログインに使用する場合は、/co/authenticate
エンドポイントが採用されます。このエンドポイントには、次のエラーが含まれます。
エラーの説明は人間が判読できるものです。この説明はコードを用いて解析するものではありません 。また、いつでも変更される可能性があります。
ステータス | コード | 説明 |
---|---|---|
400 | invalid_request | 無効な要求本文。client_id、credential_type、username、otp、realmのすべてが必要で、これ以外があってはなりません。 |
401 | unauthorized_client | クロスオリジンログインは許可されていません。 |
400 | unsupported_credential_type | 不明な資格情報タイプのパラメーター。 |
400 | invalid_request | 不明な領域の存在しない接続。 |
403 | access_denied | 間違ったメールアドレスまたはパスワード。 |
403 | access_denied | 認証エラー。 |
403 | blocked_user | ブロックされたユーザー。 |
401 | password_leaked | 使用しているパスワードは(このアプリケーションではなく)データ侵害により以前開示されたため、このログイン試行はブロックされました。 |
429 | too_many_attempts | 複数の連続したログイン試行の後にアカウントがブロックされました。ご希望の連絡方法を使用して、ブロック解除の手順を記載した通知を送信しました。 |
429 | too_many_attempts | 疑わしいログイン動作を検知したため、今後の試行はブロックされます。管理者に問い合わせてください。 |