> ## Documentation Index
> Fetch the complete documentation index at: https://docs-staging-actions-triggers-prototype.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# シングルサインオン

> シングルサインオン（SSO）とその仕組みについて説明します。

シングルサインオン（<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=single-sign-on" tip="シングルサインオン（SSO）: ユーザーが1つのアプリケーションにログインした後、そのユーザーを他のアプリケーションに自動的にログインさせるサービス。" cta="用語集の表示">SSO</Tooltip>）では、ユーザーが1つのアプリケーションにログインすると、使用しているプラットフォーム・テクノロジー・ドメインの種類に関係なく、他のアプリケーションにも自動的にサインインされます。ユーザーは1回しかサインインしないため、このような名称（シングルサインオン）で呼ばれています。

たとえば、GmailなどのGoogleサービスにログインしたユーザーは、自動的にYouTube、AdSense、Google AnalyticsといったGoogleアプリに認証されます。同様に、GmailなどのGoogleアプリからログアウトすると、自動的にすべてのGoogleアプリからログアウトされます。これを、シングルログアウトと言います。

SSOは、アプリケーションやサービスを使用するユーザーに、シームレスなエクスペリエンスを提供します。ユーザーは、アプリケーション・サービス別に資格情報を覚えておかなくても、一度ログインするだけですべてのアプリケーションにアクセスできます。

ユーザーが認証を必要とするドメインにアクセスすると、必ず認証ドメインにリダイレクトされ、ログインが求められます。ユーザーが認証ドメインにログイン済みの場合には、再度サインインを求めることなく、即座に元のドメインにリダイレクトできます。

## 仕組み

シングルサインオンとシングルログアウトは[セッション](/docs/ja-jp/manage-users/sessions)を使って実現されます。SSOでは、ユーザーに最大3つの異なるセッションが関与します。

* アプリケーションが管理するローカルセッション
* <Tooltip data-tooltip-id="react-containers-DefinitionTooltip-1" href="/docs/ja-jp/glossary?term=authorization-server" tip="認可サーバー: ユーザーによるアクセスの限界を定義するために使用される集中管理型サーバー。たとえば、認可サーバーは、ユーザーが利用できるデータ、タスク、機能を制御できます。" cta="用語集の表示">認可サーバー</Tooltip>セッション（SSOが有効化されている場合）
* <Tooltip data-tooltip-id="react-containers-DefinitionTooltip-2" href="/docs/ja-jp/glossary?term=idp" tip="IDプロバイダー（IdP）: デジタルIDを保存および管理するサービス。" cta="用語集の表示">IDプロバイダー（IdP）</Tooltip>セッション（ユーザーがGoogleやFacebook、エンタープライズ<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-1" href="/docs/ja-jp/glossary?term=security-assertion-markup-language" tip="Security Assertion Markup Language（SAML）: パスワードなしに二者間で認証情報を交換できる標準化プロトコル。" cta="用語集の表示">SAML</Tooltip> IDプロバイダーなどのIDプロバイダーを通してログインした場合）

SSOの場合は中心となるドメインが認証を行い、そのセッションを他のドメインと共有します。セッションの共有方法はSSOプロトコル間で異なりますが、一般的な概念は同じです。

たとえば、認証ドメインが署名済みの[JSON Web Token （JWT）](/docs/ja-jp/secure/tokens/json-web-tokens)（JSON Web Encryption（JWE）で暗号化）を生成することもあります。これには、認証を必要とする他のドメインのユーザーを識別するために必要なすべての情報が含まれます。このトークンはクライアントに渡されますが、署名付きであるため、クライアントが変更を加えることはできません。トークンは、リダイレクトによって元のドメインに渡されたり、認証ドメインや他のドメインによってユーザーの本人確認のために使用されたりします。

## ユニバーサルログインを使ったSSO

シングルサインオン（SSO）とAuth0を手軽で最も安全に実装するには、認証に[ユニバーサルログイン](/docs/ja-jp/authenticate/login/auth0-universal-login)を使用します。実際、アプリケーションがユニバーサルログインを使用している場合、現在のSSOの実装は、ネイティブプラットフォーム（iOSやAndroidなど）でのみ可能です。[Swift](https://auth0.com/docs/quickstart/native/ios-swift/00-login)と[Android](https://auth0.com/docs/quickstart/native/android/00-login)のクイックスタートには、ユニバーサルログインの使用例が紹介されています。

アプリケーションでユニバーサルログインを使用できない場合は、埋め込み認証について、以下の追加情報を確認してください。

* [Lock](/docs/ja-jp/libraries/lock/lock-api-reference)
* [Auth0.js](/docs/ja-jp/libraries/auth0js)

### 初回ログイン時のSSO

Auth0を使用したSSOの場合、 **中央サービス** はAuth0認可サーバーです。

ユーザーが初めてログインする際のSSOフローの例を見てみましょう。

1. アプリケーションがユーザーをログインページへリダイレクトします。

2. Auth0が、SSOクッキーの存在を確認します。

3. ユーザーは、初めてログインページを訪問していてSSOのクッキーがないため、構成した接続の1つを使ってログインするよう求められます。

   <Frame>
     <img src="https://mintcdn.com/docs-staging-actions-triggers-prototype/xwszwqk33o2xgDaZ/docs/images/ja-jp/cdy7uua7fh8z/6m01sxT4xI0oUC6ox3vb4Z/fce21417c60ebaef0400b73238d380c9/Timesheet_App_-_Login_Screen.png?fit=max&auto=format&n=xwszwqk33o2xgDaZ&q=85&s=d8a4b388da767184dc5b8bfe6694ce5d" alt="Example timesheets application login screen" width="302" height="543" data-path="docs/images/ja-jp/cdy7uua7fh8z/6m01sxT4xI0oUC6ox3vb4Z/fce21417c60ebaef0400b73238d380c9/Timesheet_App_-_Login_Screen.png" />
   </Frame>

4. ユーザーがログインすると、Auth0がSSOのクッキーを設定してユーザーをアプリケーションへリダイレクトし、ユーザーの身元情報を含んだIDトークンを返します。

### 以降のログイン時のSSO

ユーザーが再びWebサイトに戻ってきたときのSSOフローの例を見てみましょう。

1. アプリケーションがユーザーをログインページへリダイレクトします。
2. Auth0が、SSOクッキーの存在を確認します。
3. Auth0がSSOのクッキーを見つけ、必要であれば更新します。ログイン画面は表示されません。
4. Auth0がユーザーをアプリケーションへリダイレクトし、ユーザーの身元情報を含んだIDトークンを返します。

### ユーザーのSSOのステータスを確認する

`auth0.js` SDKの`checkSession`メソッドを呼び出すと、アプリケーションからユーザーのSSOステータスを確認することができます。このメソッドはiframe内でユーザーを[暗黙に認証](/docs/ja-jp/authenticate/login/configure-silent-authentication)しようとします。認証が成功するかどうかは、ユーザーに有効なSSOのクッキーがあるかどうかによって決まります。

## プロトコル

### SAMLとWS-Federation

Security Assertion Markup Language（SAML）とWebサービスフェデレーション（<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-2" href="/docs/ja-jp/glossary?term=ws-fed" tip="Webサービスフェデレーション（WS-Fed）: ドメイン全体でユーザーIDを管理するためのプロトコル。" cta="用語集の表示">WS-Fed</Tooltip>）はどちらもSSOの実装に広く使用されている[プロトコル](/docs/ja-jp/authenticate/protocols)です。SAMLとWS-Fedは、どちらもXML形式の認可・認証データを交換します。主要な部分は、ユーザー・IDプロバイダー・サービスプロバイダーです。

SAMLまたはWS-Fedでは：

1. ユーザーがサービスプロバイダーからのリソースを要求します。
2. サービスプロバイダーは、ユーザーにリソースへのアクセスを許可すべきか、IDプロバイダーに確認を取ります。
3. IDプロバイダーは、ユーザーの身元を検証し、有効であれば、ユーザーによるアクセスを許可するようサービスプロバイダーに伝えます。

### OpenID Connect

<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=openid" tip="OpenID: アプリケーションがログイン情報を収集および保存することなくにユーザーのIDを検証できるようにする認証用のオープン標準。" cta="用語集の表示">OpenID</Tooltip> Connect（OIDC）は、消費者向けのSSO実装で広く使用されている認証プロトコルです。OIDCプロトコルは、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-2" href="/docs/ja-jp/glossary?term=json-web-token" tip="JSON Web Token（JWT）: 二者間のクレームを安全に表現するために使用される標準IDトークン形式（および多くの場合、アクセストークン形式）。" cta="用語集の表示">JSON Web Token</Tooltip>と中央IDプロバイダーを介して認証を処理します。

OIDCでは：

1. ユーザーがアプリケーションへのアクセスを要求します。
2. アプリケーションは、認証のためにユーザーをIDプロバイダーへリダイレクトします。
3. IDプロバイダーはユーザーを検証し、成功すると、ユーザーにアプリケーションへのデータアクセス権を付与するよう求めます。
4. アクセス権が付与されると、IDプロバイダーは、IDトークンを生成します。このトークンには、アプリケーションが使用できるユーザー身元情報が含まれます。
5. 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](/docs/ja-jp/authenticate/single-sign-on/inbound-single-sign-on)では、Auth0がSSOサービスプロバイダー（SP）になります。

ユーザーがアプリケーションにログインすると：

1. アプリケーションがユーザーに1つ以上の外部IDプロバイダーを提示します。
2. ユーザーが認証に使用するIDプロバイダーを選択してログインします。
3. 認証が成功すると、ユーザーがアプリケーションへ戻されます。

Auth0では、SP起点のSSOは接続別に処理されます。

## IdP起点のSSO

[IdP起点SSO](/docs/ja-jp/authenticate/single-sign-on/outbound-single-sign-on)では、サードパーティーのIDプロバイダー（<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-2" href="/docs/ja-jp/glossary?term=idp" tip="IDプロバイダー（IdP）: デジタルIDを保存および管理するサービス。" cta="用語集の表示">IdP</Tooltip>）がSSOプロバイダーになります。

ユーザーがアプリケーションにログインすると：

1. アプリケーションがユーザーをIDプロバイダーにリダイレクトします。
2. サードパーティのIDプロバイダーが認証と認可を行います。
3. 認証が成功すると、ユーザーがアプリケーションへ戻されます。

IdP起点SSOの実装を計画するときに、Auth0の[SSO Dashboard拡張機能](/docs/ja-jp/customize/extensions/single-sign-on-dashboard-extension/create-sso-dashboard-application)の使用を選んだ場合には、SSOに有効化できる複数のエンタープライズアプリケーションをダッシュボードが一覧表示するように作成できます。その場合には、ログインするユーザーにそのダッシュボードが表示されます。

## ユースケース

### 企業間（B2B）

企業間（B2B）のシナリオでは、SSOにより、エンタープライズで使用するアプリケーションのパッケージ化が簡単になります。Auth0を使用すると、Active Directory（AD）、Lightweight Directory Access Protocol（LDAP）、Ping・Security Assertion Markup Language（SAML）など、一般的なエンタープライズフェデレーションのシナリオにアプリケーションを対応させることができます。そのため、パートナーや企業顧客は、各自のエンタープライズID技術を使ってログインできます。

* [事例研究：O'Reilly](https://auth0.com/case-studies/oreilly)

### 企業と消費者間（B2C）CIAM

企業と消費者間（B2C）またはCustomer Identity Access Management（CIAM）のシナリオでは、SSOによりアプリケーションやサービスにスムーズなアクセスを提供できます。お客様にアカウントの作成を要求するのではなく、Google・Facebook・LinkedIn・X・Microsoftなど、人気のソーシャルIDプロバイダーで認証できるようにします。

* [事例研究：Giving Compass](https://auth0.com/case-studies/giving-compass)

## もっと詳しく

* [サービスプロバイダー開始のシングルサインオン](/docs/ja-jp/authenticate/single-sign-on/inbound-single-sign-on)
* [IDプロバイダー開始のシングルサインオン](/docs/ja-jp/authenticate/single-sign-on/outbound-single-sign-on)
* [シングルサインオンのAPIエンドポイント](/docs/ja-jp/authenticate/single-sign-on/api-endpoints-for-single-sign-on)
* [SAML構成のトラブルシューティング](/docs/ja-jp/troubleshoot/authentication-issues/troubleshoot-saml-configurations)
* [接続を確認する](/docs/ja-jp/troubleshoot/basic-issues/verify-connections)
