仕組み
シングルサインオンとシングルログアウトはセッションを使って実現されます。SSOでは、ユーザーに最大3つの異なるセッションが関与します。- アプリケーションが管理するローカルセッション
- セッション(SSOが有効化されている場合)
- セッション(ユーザーがGoogleやFacebook、エンタープライズ IDプロバイダーなどのIDプロバイダーを通してログインした場合)
ユニバーサルログインを使ったSSO
シングルサインオン(SSO)とAuth0を手軽で最も安全に実装するには、認証にユニバーサルログインを使用します。実際、アプリケーションがユニバーサルログインを使用している場合、現在のSSOの実装は、ネイティブプラットフォーム(iOSやAndroidなど)でのみ可能です。SwiftとAndroidのクイックスタートには、ユニバーサルログインの使用例が紹介されています。 アプリケーションでユニバーサルログインを使用できない場合は、埋め込み認証について、以下の追加情報を確認してください。初回ログイン時のSSO
Auth0を使用したSSOの場合、 中央サービス はAuth0認可サーバーです。 ユーザーが初めてログインする際のSSOフローの例を見てみましょう。- アプリケーションがユーザーをログインページへリダイレクトします。
- Auth0が、SSOクッキーの存在を確認します。
-
ユーザーは、初めてログインページを訪問していてSSOのクッキーがないため、構成した接続の1つを使ってログインするよう求められます。
- ユーザーがログインすると、Auth0がSSOのクッキーを設定してユーザーをアプリケーションへリダイレクトし、ユーザーの身元情報を含んだIDトークンを返します。
以降のログイン時のSSO
ユーザーが再びWebサイトに戻ってきたときのSSOフローの例を見てみましょう。- アプリケーションがユーザーをログインページへリダイレクトします。
- Auth0が、SSOクッキーの存在を確認します。
- Auth0がSSOのクッキーを見つけ、必要であれば更新します。ログイン画面は表示されません。
- Auth0がユーザーをアプリケーションへリダイレクトし、ユーザーの身元情報を含んだIDトークンを返します。
ユーザーのSSOのステータスを確認する
auth0.js
SDKのcheckSession
メソッドを呼び出すと、アプリケーションからユーザーのSSOステータスを確認することができます。このメソッドはiframe内でユーザーを暗黙に認証しようとします。認証が成功するかどうかは、ユーザーに有効なSSOのクッキーがあるかどうかによって決まります。
プロトコル
SAMLとWS-Federation
Security Assertion Markup Language(SAML)とWebサービスフェデレーション()はどちらもSSOの実装に広く使用されているプロトコルです。SAMLとWS-Fedは、どちらもXML形式の認可・認証データを交換します。主要な部分は、ユーザー・IDプロバイダー・サービスプロバイダーです。 SAMLまたはWS-Fedでは:- ユーザーがサービスプロバイダーからのリソースを要求します。
- サービスプロバイダーは、ユーザーにリソースへのアクセスを許可すべきか、IDプロバイダーに確認を取ります。
- IDプロバイダーは、ユーザーの身元を検証し、有効であれば、ユーザーによるアクセスを許可するようサービスプロバイダーに伝えます。
OpenID Connect
Connect(OIDC)は、消費者向けのSSO実装で広く使用されている認証プロトコルです。OIDCプロトコルは、と中央IDプロバイダーを介して認証を処理します。 OIDCでは:- ユーザーがアプリケーションへのアクセスを要求します。
- アプリケーションは、認証のためにユーザーをIDプロバイダーへリダイレクトします。
- IDプロバイダーはユーザーを検証し、成功すると、ユーザーにアプリケーションへのデータアクセス権を付与するよう求めます。
- アクセス権が付与されると、IDプロバイダーは、IDトークンを生成します。このトークンには、アプリケーションが使用できるユーザー身元情報が含まれます。
- IDプロバイダーがユーザーをアプリケーションへ戻します。
AD/LDAP
Lightweight Directory Access Protocol(LDAP)は、複数のアプリケーションで共有できる資格情報のディレクトリにアクセスするためのアプリケーションプトロコルで、イントラネットで広く使用されています。Active Directory(AD)と併用することでユーザーIDの一元管理が可能になり、アプリケーションはLDAP/ADサーバーに認証要求を送信するようになります。LDAPプロトコルは、LDAP Data Interchange Format(LDIF)で情報を交換します。SP起点のSSO
SP-initiated SSOでは、Auth0がSSOサービスプロバイダー(SP)になります。 ユーザーがアプリケーションにログインすると:- アプリケーションがユーザーに1つ以上の外部IDプロバイダーを提示します。
- ユーザーが認証に使用するIDプロバイダーを選択してログインします。
- 認証が成功すると、ユーザーがアプリケーションへ戻されます。
IdP起点のSSO
IdP起点SSOでは、サードパーティーのIDプロバイダー()がSSOプロバイダーになります。 ユーザーがアプリケーションにログインすると:- アプリケーションがユーザーをIDプロバイダーにリダイレクトします。
- サードパーティのIDプロバイダーが認証と認可を行います。
- 認証が成功すると、ユーザーがアプリケーションへ戻されます。