# Okta認可によるSSOの設定

Oktaでエンタープライズアカウントを管理している場合、EMQX Platformの認可サーバーとしてOktaを選択し、シングルサインオン（SSO）を有効にできます。さらに、Okta側でOpenID Connect（OIDC）の設定を行う必要があります。本ページでは、EMQXとOktaのOIDC設定例を示し、エンタープライズIDプロバイダー（IdP）とEMQX Platformを接続してSSOを有効化するためのエンドツーエンドの設定手順を解説します。

## 前提条件

- EMQX Platformのルートアカウントを持っていること。
- Okta Workforce Identityの管理者アカウントを持っていること。
- Oktaのエンタープライズアカウント管理に慣れていること。[Oktaドキュメント](https://help.okta.com/oie/en-us/content/topics/identity-engine/oie-get-started.htm)を参照してください。

## ステップ1：EMQX PlatformでSSOを有効化する

1. EMQX PlatformルートアカウントでCloud Consoleにログインします。

2. 右上のユーザーアイコンをクリックし、ドロップダウンメニューから**SSO**を選択します。

3. SSO設定フローに入り、**Enable SSO**をクリックします。

4. OIDCアイデンティティプロバイダーとして`Okta`を選択し、**Next**をクリックします。

5. ページに表示される**Redirect URL**を確認します。このアドレスは後続の設定で使用します。

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

## ステップ2：Oktaでアプリケーションを作成する

1. 管理者アカウントで[Okta Workforce Identity](https://www.okta.com/workforce-identity/)にログインします。

   ::: tip

   管理者インターフェースにアクセスするには、**Admin**ボタンをクリックする必要がある場合があります。

   :::

2. 管理者インターフェースの左メニューから**Applications** -> **Applications**に移動します。

3. メインページで**Create App Integration**をクリックします。

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

4. ポップアップで、**Sign-in method**に**OIDC - OpenID Connect**を選択し、**Application type**に**Web Application**を選択して、**Next**をクリックし設定ページに進みます。

5. **New Web App Integration**設定ページで、以下の情報を入力します：

   - **App integration name**：アプリ名を入力します。例：`EMQX-SSO`。
   - **Sign-in redirect URIs**：ステップ1で取得したリダイレクトURLを入力します。
   - **Controlled access**：要件に応じて設定します。本例では`Skip group assignment for now`を選択します。

6. 設定完了後、**Save**をクリックして作成したアプリケーションの概要ページに移動します。

## ステップ3：EMQX PlatformでSSO情報を設定する

EMQX Platformの**Configure SSO**ページに移動し、以下の手順を行います：

1. **Configure SSO**ページで以下の情報を入力します：

   - **Domain**：Oktaのドメインを`trial-9021952.okta.com`のように入力します。形式は`{YourOktasubdomain}.okta.com`です。
   - **Client ID**：Oktaアプリケーションの概要ページから取得したClient IDを入力します。
   - **Client Secret**：Oktaアプリケーションの概要ページから取得したClient Secretを入力します。
   - **Server**：独自の認証サーバーを持っていない場合は`default`がデフォルトです。独自の認証サーバーがある場合は`authorizationServerId`を入力してください。Oktaの認証サーバー設定については[関連ドキュメント](https://developer.okta.com/docs/concepts/auth-servers/)を参照してください。

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

2. **Confirm**をクリックして設定を完了します。

3. 設定が成功すると、SSOが有効になったことを示すページが表示され、SSOログインURLが取得できます。

## ステップ4：Oktaでユーザーを追加しアプリケーションを認可する

1. Okta管理者インターフェースの左メニューから**Directory** -> **People**を選択します。

2. メインページで**Add Person**をクリックします。

3. ユーザー情報を入力します。例：[Jack@emqx.io](mailto:Jack@emqx.io)。ユーザーグループの認可も可能です。

4. **Save**をクリックしてPeopleページに戻ります。

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

5. ユーザー名をクリックしてユーザー情報ページに入り、**Assign Applications**をクリックしてステップ2で作成した`EMQX-SSO`アプリケーションを認可します。**Assign**をクリックし、必要に応じて追加のユーザー情報を入力し、**Save and Go Back**をクリックします。

6. アプリケーションが認可済み（**Assigned**）であることを確認し、**Done**をクリックしてユーザーのアプリケーション認可を完了します。

## ステップ5：EMQX Platformでサブアカウントを作成する

1. EMQX PlatformルートアカウントでCloud Consoleのユーザー管理ページにアクセスします。

2. 右上の**+ New User**をクリックします。

3. アカウントポップアップで、Oktaで認可したメールアカウント（例：[Jack@emqx.io](mailto:Jack@emqx.io)）を入力し、このアカウントにロールを割り当てます。ロールの設定については[ロールと権限](./user.md#roles-and-permissions)を参照してください。

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

4. ユーザー管理ページのサブアカウント用ログインURLを使用してログインします。**Log in through an identity provider**をクリックすると、ブラウザがOktaログインページにリダイレクトされます。

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

5. Oktaログインページでログインを完了すると、ブラウザは自動的にEMQX Platformに戻り、SSOログインが完了します。
