# シングルサインオン（SSO）概要

シングルサインオン（SSO）は、同じ認証サービスに関連付けられた複数の異なるアプリケーションやシステムに対して、ユーザーが1組のユーザー名とパスワードでアクセスできる認証サービスです。EMQX PlatformでSSOを有効にすると、ユーザーは企業アカウントの資格情報を使って、EMQX Platformのデプロイメントコンソールに便利にログインできます。

EMQX Platformは、[OpenID Connect（OIDC）](https://openid.net/developers/how-connect-works/)標準に基づいてSSO機能を実装しています。ユーザーが企業アカウントでシングルサインオンを行うと、EMQX Platformはアプリケーションサーバー（「リライイングパーティ（RP）」とも呼ばれます）として、認可されたアイデンティティプロバイダー（企業独自のアイデンティティ管理サーバー）からユーザーの基本的な識別情報を取得できます。これにより、ユーザーは企業アカウントを使ってワンクリックでEMQX Platformにログインできます。

## 主要な概念

シングルサインオン機能を利用する前に、以下の主要な概念を理解しておく必要があります。

- **OpenIDプロバイダー（OP）** または **アイデンティティプロバイダー（IdP）**：認可されたアイデンティティプロバイダーまたは認可サーバー。代表的な企業向けIdPにはOktaやAzure Active Directory（AAD）があります。
- **RP**：リライイングパーティ。ユーザー認証をIdPに委託するアプリケーションサーバーやウェブサイトのことです。EMQX Platformはシングルサインオンサービスの提供者として、サービスプロバイダー（SP）とも呼ばれます。
- **IDトークン**：認証が成功した後、アイデンティティプロバイダーが返す識別子で、JWT形式の文字列です。ユーザーの基本情報を取得するために使用されます。

## 認可フロー

ユーザーがSSOを使ってEMQX Platformにログインする基本的なワークフローは、以下の図の通りです。

<img src="./_assets/sso0.png" alt="sso" style="zoom:67%;" />

1. ユーザーはウェブブラウザを使って、アプリケーションサーバーであるEMQX Platformにログインします。
2. EMQX Platformは認証と認可のためにIdPへリダイレクトします。
3. IdPは認可コードをブラウザに返し、ブラウザはそれをEMQX Platformにリダイレクトします。
4. EMQX PlatformはIdPから提供されたコードを使ってIDトークンを取得し、IdPに対して検証を行います。
5. IdPはIDトークンをEMQX Platformに返します。
6. EMQX Platformはブラウザに認可を付与し、ログイン処理を完了します。

## 設定手順

SSO機能を有効にする前に、EMQX Platformと企業のIdP間で信頼関係を構築するためにOIDCの設定が必要です。一般的な手順は以下の通りです。

1. 企業のIdPにEMQX Platformのメタデータ情報を設定します。
2. 企業のIdPが生成したメタデータ情報を取得し、EMQX Platformに関連情報を入力してSSO設定を完了させます。
3. 企業のIdPでユーザーを作成し、EMQX Platformアプリケーションへの認可を付与します。
4. EMQX Platformで対応するサブアカウントを作成します。
5. 専用のSSOログインURLを使ってログインを完了します。

## 設定例

以下のページでは、代表的な企業IdP（OktaおよびAzure AD）による認可を用いてSSOを有効化する設定例を紹介しています。

- [Okta認可によるSSO設定](./sso_okta.md) 
- [Azure AD認可によるSSO設定](./sso_azure.md)
