Cross-Originリソース共有を構成する
Before you start
セキュリティ上の理由により、アプリケーションのオリジンURLが承認済みURLのリストに含まれている必要があります。アプリケーションのAllowed Callback URLs(許可されているコールバックURL)に追加されていない場合は、Allowed Origins (CORS)(許可されているオリジン(CORS))のリストに追加する必要があります。
Allowed Web Origins(許可されているWebオリジン)が、アプリケーションのSettings(設定)ビューで要求を行うドメインに設定されていることを確認してください。URLはサブドメインにワイルドカードを含めることができますが、ドメインURLの後に相対パスは使用できません。詳細については、「サブドメインのプレースホルダー」をお読みください。
カスタムドメインを有効化しない場合は、cross-origin認証のフォールバックとして、Auth0.jsを使う検証ページを作成する必要があります。
Auth0では、ユニバーサルログインを通じた認証トランザクションの処理を強く推奨しています。そうすることにより、ユーザーの認証が最も簡単で安全になります。ただし、状況によっては、ログインをアプリケーションに直接埋め込む必要がある場合もあります。埋め込みログインが必要な場合は、アプリケーションでcross-originリソース共有(CORS)を構成する必要があります。
CORSは、Auth0 Dashboardを使用して構成できます。
cross-origin認証を構成する
[Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]の順に移動し、アプリケーションの名前をクリックして表示します。
[Cross-Origin Authentication(Cross-Origin認証)]で、[Allow Cross-Origin Authentication(Cross-Origin認証を許可する)]をオンに切り替えます。
[Allowed Origins (CORS)(許可されているオリジン(CORS))]に、アプリケーションのオリジンURLを入力します。オリジンについての詳細は、Mozilla MDN Web Docs の「Origin」をご覧ください。
[Save Changes(変更を保存)]をクリックします。
cross-origin検証ページを作成する
状況によっては、サードパーティのクッキーを利用できない場合があります。特定のバージョンのブラウザーではサードパーティのクッキーがサポートされておらず、仮にサポートされていても、ユーザーの設定で無効にされている場合があります。
サポートされているブラウザーでは、サードパーティのクッキーが無効になっている場合に対応するために、アプリケーションの専用ページでAuth0.js SDKのcrossOriginVerification
メソッドを使用できます。
Chrome、Opera、Safariなど、サポートされていないブラウザーでは、サードパーティのクッキーが無効になっている場合、カスタムドメインを有効にしない限り、cross-origin認証は機能しません。
アプリケーション内で、Auth0.jsの
WebAuth
をインスタンス化するページを作成します。crossOriginVerification
を直ちに呼び出します。ページの名前は自由に指定できます。サードパーティのクッキーが利用できない場合、Auth0.jsは異なるcross-origin検証フローを呼び出すためにiframeをレンダリングします。codeblockOld.header.login.configureSnippet<!-- callback-cross-auth.html --> <head> <script src="https://cdn.auth0.com/js/auth0/9.11/auth0.min.js"></script> <script type="text/javascript"> var auth0Client = new auth0.WebAuth({ clientID: '{yourClientId}', domain: '{yourDomain}' }); auth0Client.crossOriginVerification(); </script> </head>
Was this helpful?
/[Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]の順に移動し、アプリケーションを選択して表示します。
[Cross-Origin Authentication(Cross-Origin認証)]で、作成したコールバックページのURLを「Cross-Origin Verification Fallback URL(Cross-Origin検証URL) 」フィールドに追加します。
[Save Changes(変更を保存)]をクリックします。
詳細については、GitHubのcross-origin認証サンプルをご覧ください。
エラーコードと説明
Auth0.js v9(およびLock)が埋め込みログインに使用されると、/co/authenticate
エンドポイントが呼び出され、以下のエラーが発生します。
ステータス | コード | 説明 |
---|---|---|
400 |
invalid_request |
無効な要求本文。client_id、credential_type、username、otp、realmのすべてが必要で、これ以外があってはなりません。 |
400 |
unsupported_credential_type |
不明な資格情報タイプのパラメーター。 |
400 |
invalid_request |
不明な領域の存在しない接続。 |
401 |
unauthorized_client |
クロスオリジンのログインは許可されていません。 |
401 |
password_leaked |
使用しているパスワードは(このアプリケーションではなく)データ侵害により以前開示されたため、このログイン試行はブロックされました。 |
403 |
access_denied |
間違ったメールアドレスまたはパスワード。 |
403 |
access_denied |
認証エラー |
403 |
blocked_user |
ブロックされているユーザー |
429 |
too_many_attempts |
複数の連続したログイン試行の後にアカウントがブロックされました。ご希望の連絡方法を使用して、ブロック解除の手順を記載した通知を送信しました。 |
429 |
too_many_attempts |
疑わしいログイン動作を検知したため、今後の試行はブロックされます。管理者に問い合わせてください。 |
さらに、error
またはerror_description
プロパティがない一般的な403
エラーも発生する可能性があります。応答のボディは、次のようになります:
Origin https://test.app is not allowed.
(オリジンのhttps://test.appは許可されていません)
ブラウザーテストのサポート
以下のブラウザーでは、サードパーティのクッキーが無効になっている場合でもcross-origin認証を使用できます。
Microsoft Internet Explorer
SameSiteクッキー属性
これまで、samesite
クッキー属性にはtrue
、false
、strict
、lax
のオプションがありました。属性が手動で設定されていない場合、Auth0はデフォルト値のfalse
を使用していました。
2020年2月より、Google Chrome v80によるクッキーの取り扱いが変更され、Auth0はこれを受けて以下の変更を行いました。
samesite
属性のないクッキーにはlax
が設定されます。sameSite=none
のクッキーにはセキュリティ保護が必要です。保護されていない場合、ブラウザーのcookie jarには保存できません。
これらの変更はセキュリティを強化し、クロスサイトリクエストフォージェリ(CSRF)攻撃からの防御を目的にしています。