Lock のインストール
インストール方法
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 タグを追加することを推奨しています。
<meta name="viewport" content="width=device-width, initial-scale=1"/>
依存関係のバンドル
auth0-lock モジュールをインストールした後、それ自体とすべての依存関係をまとめてバンドルする必要があります。Browserify と webpack のサンプルを参照してください。
クロスオリジン認証
使い方
ステップ 1. Lock の初期化
Auth0Lock オブジェクトを初期化し、Auth0 の (Auth0 アプリケーションごとに一意のクライアントIDで、Dashboard から確認できます) と Auth0 のドメイン (たとえば yourname.auth0.com) を指定する必要があります。
ステップ 2. 認証してユーザー情報を取得する
on メソッドを使用して authenticated イベントを待ち受けます。イベントが発生したら、取得した accessToken を使用して getUserInfo メソッドを呼び出し、必要に応じてユーザープロファイル情報を取得します。
その後、ページの内容を操作し、ユーザーにユーザープロファイル情報を表示できます (たとえば、ウェルカムメッセージにユーザーの名前を表示できます) 。
<h2>Welcome <span id="nick" class="nickname"></span></h2>
ユーザープロファイルを保存する場合は、プロファイルオブジェクトを JSON.stringify して文字列化し、後で使うときに JSON.parse で復元する必要があることに注意してください。これは、localStorage には JSON オブジェクトではなく文字列として保存する必要があるためです。
手順 3. Lock を表示する
lock.show(); を使えば、ページにアクセスしたときに Lock を自動的に表示することもできます。
これで Lock ウィジェットが表示され、ここまでの設定と合わせて、ログインを処理する準備が整います。
パスワードレス
Auth0Lock ではなく Auth0LockPasswordless を使って、通常とは少し異なる方法で Lock を初期化します。
パスワードレスのオプション
allowedConnections オプションに email または sms を指定して Lock を初期化します。
email を使用する場合は、さらに 1 つ選択肢があります。ユーザーに入力用の code を受け取らせるか、「マジックリンク」を受け取らせるかを選択できます。これは passwordlessMethod オプションで設定し、値には code または link を指定します。
パスワードレスの使用例
埋め込み認証でのシングルサインオン
- SSO を行う両方のアプリケーションが、いずれもファーストパーティアプリケーションである必要があります。サードパーティアプリケーションとの SSO は機能しません。
- カスタムドメインを使用し、SSO を行う両方のアプリケーションと Auth0 テナントを同一ドメイン上に配置する必要があります。従来、Auth0 のドメインは
foo.auth0.comの形式ですが、カスタムドメインを使用すると、対象の各アプリケーションと Auth0 テナントで同じドメインを使用できるため、CSRF 攻撃のリスクを軽減できます。
エラーコードと説明
/co/authenticate エンドポイントが使用され、次のエラーが返されることがあります。
エラーの説明は人が読める形式です。コードで解析しないでください。また、この内容はいつでも変更される可能性があります。
| ステータス | コード | 説明 |
|---|---|---|
| 400 | invalid_request | リクエストボディが無効です。client_id、credential_type、username、otp、realm のすべてが必要であり、指定できるのはこれらのみです。 |
| 401 | unauthorized_client | クロスオリジンログインは許可されていません。 |
| 400 | unsupported_credential_type | credential_type パラメーターが不明です。 |
| 400 | invalid_request | 不明な realm: non-existent-connection。 |
| 403 | access_denied | メールアドレスまたはパスワードが正しくありません。 |
| 403 | access_denied | 認証エラー |
| 403 | blocked_user | ユーザーがブロックされています |
| 401 | password_leaked | 現在使用しているパスワードが、過去にデータ侵害 (このアプリケーション外) で漏えいしていたため、このログイン試行はブロックされました。 |
| 429 | too_many_attempts | ログイン試行が連続して複数回行われたため、アカウントがブロックされました。ブロックを解除する手順を、指定された連絡方法で通知しています。 |
| 429 | too_many_attempts | 不審なログイン動作が検出されたため、以降の試行はブロックされます。管理者に連絡してください。 |