Cross-Origin認証

Auth0では、認証トランザクションをユニバーサルログインで処理することを強くお勧めします。 それがユーザーを認証する最も簡単で安全な方法だからです。詳細については、「中央管理のユニバーサルログインと埋め込みログイン」をお読みください。認証フォームをアプリケーションに直接埋め込む必要がある状況は限られています。推奨されているわけではありませんが、クロスオリジン認証の場合はこれを行うことができます。

クロスオリジン認証とは

アプリケーションから(Lockウィジェットまたはカスタムログインフォーム経由で)Auth0に対して認証要求が行われると、ユーザーの資格情報はアプリケーションにサービスを提供するドメインとは異なるドメインに送信されます。1つのオリジンから提供されるアプリケーションでユーザー資格情報を収集し、それを別のオリジンに送信すると、フィッシング攻撃の可能性など、特定のセキュリティ上の脆弱性が生じる可能性があります。

Auth0は、サードパーティCookieを使用するクロスオリジン認証フローを提供します。サードパーティCookieを使用すると、LockとAuth0のバックエンドが必要なチェックを実行して、異なるオリジン間で認証トランザクションを安全に行うことができます。これは、アプリケーションでLockウィジェットまたはカスタムログインフォームを使用してシングルサインオンエクスペリエンスを作成するときにフィッシングを防止するのに役立ちます。また、SSOが目的でない場合でも、安全なログインエクスペリエンスを作成するのに役立ちます。

クロスオリジン認証は推奨されていません。ユーザー名とパスワードを使用してディレクトリに対する認証を行う場合にのみ必要です。ソーシャルIdPやエンタープライズフェデレーションは異なるメカニズムを使用しており、OpenIDConnectやSAMLなどの標準プロトコルを介してリダイレクトします。さらに、クロスオリジン認証は、Web上の埋め込み型ログイン(Lockまたはauth0.jsを使用)にのみ適用されます。埋め込み型ログインを使用するネイティブアプリケーションは、標準のOAuth 2.0トークンエンドポイントを利用します。

制限事項

クロスオリジン認証はサードパーティCookieを使用して実現されるため、サードパーティCookieを無効にすると、クロスオリジン認証に失敗します。最新バージョンのFirefoxなど、一部のブラウザーではサードパーティCookieがデフォルトで無効になっているため、Firefoxのユーザーに対してはクロスオリジン認証が機能しません。Firefoxユーザーが埋め込み型ログインを機能させる唯一の方法は、以下で説明するようにカスタムドメインを使用することです。

この問題を修復するには、次の2通りの方法があります。

  • テナントでカスタムドメインを有効にし、Auth0カスタムドメインと同じトップレベルのドメインを持つドメインでWebアプリケーションをホストします。たとえば、https://northwind.comでアプリケーションをホストし、Auth0カスタムドメインをhttps://login.northwind.comに設定します。これにより、これらのCookieはサードパーティのものではなくなり(Auth0テナントとアプリケーションの両方が同じトップレベルのドメインを使用しているため)、ブラウザーによって阻止されなくなります。

  • サードパーティCookieが無効になっている場合でも、限られた数のブラウザーでクロスオリジン認証が機能するようなクロスオリジン認証ページを作成してリンクします。

もっと詳しく