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

# シングルサインオン

> Auth0 シングルサインオン（SSO）を使用すると、ユーザーは一度認証するだけで、資格情報を再入力せずに同じテナント内のすべてのアプリケーションにアクセスできます。

<Tooltip tip="シングルサインオン（SSO）: ユーザーが1つのアプリケーションにログインすると、他のアプリケーションにも自動的にログインできるようになるサービス。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Single+Sign-on">シングルサインオン</Tooltip> (SSO) とは、ユーザーが1つのアプリケーションにログインすると、そのユーザーが使用しているプラットフォーム、技術、ドメインに関係なく、他のアプリケーションにも自動的にサインインされる仕組みです。ユーザーは一度サインインするだけでよいため、この機能はシングルサインオンと呼ばれます。

たとえば、Gmail のような Google のサービスにログインすると、YouTube、AdSense、Google Analytics、その他の Google アプリにも自動的に認証されます。同様に、Gmail やその他の Google アプリからログアウトすると、すべてのアプリから自動的にログアウトされます。これはシングルログアウトと呼ばれます。

SSO により、ユーザーはアプリケーションやサービスをシームレスに利用できます。アプリケーションやサービスごとに別々の資格情報を覚える必要はなく、一度ログインするだけで、関連するアプリケーション一式にアクセスできます。

ユーザーが認証を必要とするドメインにアクセスすると、認証ドメインにリダイレクトされ、そこでログインを求められる場合があります。ユーザーがすでに認証ドメインにログインしていれば、再度サインインしなくても、すぐに元のドメインへリダイレクトされます。

<div id="how-it-works">
  ## 仕組み
</div>

シングルサインオンとシングルログアウトは、[セッション](/docs/ja-jp/manage-users/sessions)を利用することで実現できます。SSO では、ユーザーに対して最大 3 種類の異なるセッションが存在する場合があります。

* アプリケーションで維持されるローカルセッション
* SSO が有効な場合の<Tooltip tip="認可サーバー: ユーザーのアクセス範囲を定義するうえで中心的な役割を果たすサーバーです。たとえば、認可サーバーはユーザーが利用できるデータ、タスク、機能を制御できます。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Authorization+Server">認可サーバー</Tooltip>セッション
* ユーザーが<Tooltip tip="IDプロバイダー (IdP): デジタルアイデンティティを保存および管理するサービスです。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Identity+Provider">IDプロバイダー</Tooltip> (Google、Facebook、またはエンタープライズ<Tooltip tip="Security Assertion Markup Language (SAML): パスワードなしで 2 者間が認証情報を交換できるようにする標準化プロトコルです。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=SAML">SAML</Tooltip> IDプロバイダーなど) 経由でログインすることを選択した場合の<Tooltip tip="IDプロバイダー (IdP): デジタルアイデンティティを保存および管理するサービスです。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Identity+Provider+%28IdP%29">IDプロバイダー (IdP)</Tooltip> セッション

SSO では、中央のドメインが認証を行い、その後ほかのドメインとセッションを共有します。セッションの共有方法は SSO プロトコルによって異なる場合がありますが、基本的な考え方は同じです。

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

<div id="sso-with-universal-login">
  ## Universal Login での SSO
</div>

Auth0 でシングルサインオン (SSO) を実装する最も簡単で安全な方法は、認証に [Universal Login](/docs/ja-jp/authenticate/login/auth0-universal-login) を使用することです。実際、現在ネイティブプラットフォーム (iOS や Android など) で SSO が可能なのは、アプリケーションが <Tooltip tip="Universal Login: アプリケーションは、ユーザーのアイデンティティを確認するために、Auth0 の認可サーバーでホストされている Universal Login にリダイレクトされます。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Universal+Login">Universal Login</Tooltip> を使用している場合に限られます。[Swift](/docs/ja-jp/quickstart/native/ios-swift) と [Android](/docs/ja-jp/quickstart/native/ios-swift) のクイックスタートには、Universal Login の使用例がいくつかあります。

アプリケーションで Universal Login を使用できない場合は、埋め込み認証の詳細について以下を参照してください。

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

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  シングルサインオンで [Passwordless](/docs/ja-jp/authenticate/passwordless/passwordless-with-universal-login) を使用している場合、接続パラメータ `sms` と `email` では既存の Auth0 セッションは利用されず、ユーザーはログインを求められます。
</Callout>

<div id="sso-on-first-login">
  ### 初回ログイン時の SSO
</div>

Auth0 で SSO を利用する場合、**Central Service** は Auth0 の<Tooltip tip="認可サーバー: ユーザーがアクセスできる範囲を定義する中央集約型のサーバーです。たとえば、認可サーバーはユーザーが利用できるデータ、タスク、機能を制御できます。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Authorization+Server">認可サーバー</Tooltip>です。

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

1. アプリケーションがユーザーをログインページにリダイレクトします。
2. Auth0 は既存の SSO Cookie があるかどうかを確認します。
3. ユーザーがログインページにアクセスするのは今回が初めてで、SSO Cookie も存在しないため、設定済みのいずれかの接続を使用してログインするよう求められます。

   <Frame>
     <img src="https://mintcdn.com/translations/6GE5Z24GDCZehiJ9/docs/images/cdy7uua7fh8z/6m01sxT4xI0oUC6ox3vb4Z/ca72f1208d952a9a43f24f425d360e48/Screenshot_2024-07-11_at_11.57.33.png?fit=max&auto=format&n=6GE5Z24GDCZehiJ9&q=85&s=64c63b7963ed2b26118bf3e69231c7a6" alt="タイムシートアプリケーションのログイン画面の例" width="283" height="527" data-path="docs/images/cdy7uua7fh8z/6m01sxT4xI0oUC6ox3vb4Z/ca72f1208d952a9a43f24f425d360e48/Screenshot_2024-07-11_at_11.57.33.png" />
   </Frame>
4. ユーザーがログインすると、Auth0 は SSO Cookie を設定し、ユーザーをアプリケーションにリダイレクトしたうえで、ユーザーのアイデンティティ情報を含む ID トークンを返します。

<div id="sso-on-subsequent-logins">
  ### 以降のログイン時の SSO
</div>

ユーザーが再度 Web サイトを訪問した際の SSO フローの例を見てみましょう。

1. アプリケーションがユーザーをログインページにリダイレクトします。
2. Auth0 は既存の SSO Cookie があるかどうかを確認します。
3. Auth0 は SSO Cookie を検出し、必要に応じて更新します。ログイン画面は表示されません。
4. Auth0 はユーザーをアプリケーションにリダイレクトし、ユーザーのアイデンティティ情報を含む ID トークンを返します。

<div id="check-users-sso-status">
  ### ユーザーのSSOステータスを確認する
</div>

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

<div id="protocols">
  ## プロトコル
</div>

<div id="saml-and-ws-federation">
  ### SAML と WS-Federation
</div>

Security Assertion Markup Language (SAML) と Web Services Federation (<Tooltip tip="Web Service Federation (WS-Fed): ドメインをまたいでユーザーのアイデンティティを管理するためのプロトコル。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=WS-Fed">WS-Fed</Tooltip>) はどちらも、SSO の実装で広く使われている[プロトコル](/docs/ja-jp/authenticate/protocols)です。SAML と WS-Fed はどちらも、認可および認証に関するデータを XML 形式でやり取りします。このやり取りの主な当事者は、ユーザー、IDプロバイダー、サービスプロバイダーです。

SAML または WS-Fed では、次のような流れになります。

1. ユーザーがサービスプロバイダーにリソースへのアクセスを要求します。
2. サービスプロバイダーは、ユーザーにそのリソースへのアクセスを許可すべきかどうかを、IDプロバイダーに確認します。
3. IDプロバイダーはユーザーを認証し、有効であれば、そのユーザーにアクセスを許可すべきであることをサービスプロバイダーに通知します。

<div id="openid-connect">
  ### OpenID Connect
</div>

<Tooltip tip="OpenID: ログイン情報を収集・保存することなく、アプリケーションがユーザーの本人確認を行えるようにする認証のためのオープン標準。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=OpenID">OpenID</Tooltip> Connect (OIDC) は、一般消費者向けの SSO 実装で広く使われている認証プロトコルです。OIDC プロトコルは、<Tooltip tip="JSON Web Token (JWT): 2 者間でクレームを安全に表現するために使用される標準の ID トークン形式（多くの場合、アクセストークンの形式としても使用）。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=JSON+Web+Tokens">JSON Web Tokens</Tooltip> と一元的なIDプロバイダーを通じて認証を処理します。

OIDC では、

1. ユーザーがアプリケーションへのアクセスを要求します。
2. アプリケーションは、認証のためにユーザーをIDプロバイダーへリダイレクトします。
3. IDプロバイダーがユーザーを認証し、成功すると、アプリケーションによるデータへのアクセスを許可するようユーザーに求めます。
4. アクセスが許可されると、IDプロバイダーは ID トークンを生成します。これには、アプリケーションが利用するユーザーのアイデンティティ情報が含まれます。
5. IDプロバイダーはユーザーをアプリケーションに戻します。

<div id="adldap">
  ### AD/LDAP
</div>

Lightweight Directory Access Protocol (LDAP) は、複数のアプリケーションで共有できる資格情報のディレクトリにアクセスするためのアプリケーションプロトコルで、一般的にイントラネットで利用されます。Active Directory (AD) と組み合わせると、LDAPはユーザーのアイデンティティを一元的に管理する場所を提供するため、アプリケーションはLDAP/ADサーバーに認証リクエストを送信します。LDAPプロトコルでは、LDAP Data Interchange Format (LDIF) で情報をやり取りします。

<div id="service-provider-initiated-sso">
  ## サービスプロバイダー主導のSSO
</div>

[サービスプロバイダー主導のSSO](/docs/ja-jp/authenticate/single-sign-on/inbound-single-sign-on) では、Auth0 が SSO のサービスプロバイダー (SP) になります。

ユーザーがアプリケーションにログインすると、次のような流れになります。

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

Auth0 での SP 主導の SSO は、接続によって処理されます。

<div id="identity-provider-initiated-sso">
  ## アイデンティティプロバイダー起点のSSO
</div>

[Identity-Provider-initiated SSO](/docs/ja-jp/authenticate/single-sign-on/outbound-single-sign-on) では、サードパーティのIDプロバイダー (IdP) が 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 を有効にできる複数のエンタープライズ アプリケーションを一覧表示するダッシュボードを作成できます。作成したダッシュボードをユーザーに提示し、そこからログインしてもらいます。

<div id="use-cases">
  ## ユースケース
</div>

<div id="business-to-business">
  ### 企業間
</div>

Business to Business (B2B) のシナリオでは、SSO を活用することで、エンタープライズ向けにアプリケーションを提供しやすくなります。Auth0 を使用すると、アプリケーションで Active Directory (AD) 、Lightweight Directory Access Protocol (LDAP) 、Ping、Security Assertion Markup Language (SAML) など、一般的なエンタープライズ フェデレーションのシナリオに対応できます。これにより、パートナーや企業のお客様は、使い慣れたエンタープライズ アイデンティティ技術を使ってログインできます。

* [ケーススタディ: O'Reilly](https://auth0.com/case-studies/oreilly)

<div id="business-to-consumer-ciam">
  ### Business to Consumer CIAM
</div>

Business to Consumer (B2C) または Customer Identity Access Management (CIAM) のシナリオでは、SSO により、アプリケーションやサービスにシームレスにアクセスできるようになります。顧客に新たなアカウントの作成を求める代わりに、Google、Facebook、LinkedIn、X、Microsoft などの一般的なソーシャルアイデンティティプロバイダーを使って認証できるようにできます。

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