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

# SSO（シングルサインオン）導入ガイド

> SSO（シングルサインオン）の設定から、ユーザーのプロビジョニング、Devin EnterpriseでのIdPグループの設定までを網羅したガイド。

このガイドでは、DevinにおけるSSO (シングルサインオン) の導入からIdPグループの設定まで、SSO (シングルサインオン) のライフサイクル全体をEnterprise管理者向けに説明するとともに、ユーザーのプロビジョニングに関する選択肢を解説します。

プロバイダ別の設定手順については、[Okta](/ja/enterprise/security-access/sso/okta)、[Microsoft Entra ID](/ja/enterprise/security-access/sso/azure)、[SAML](/ja/enterprise/security-access/sso/saml)、または[Generic OIDC](/ja/enterprise/security-access/sso/oidc)を参照してください。自動プロビジョニングについては、[SCIM Setup](/ja/enterprise/security-access/scim)を参照してください。

***

<div id="1-setting-up-sso">
  ## 1. SSO (シングルサインオン)  の設定
</div>

<div id="creating-your-sso-application">
  ### SSO (シングルサインオン)  アプリケーションの作成
</div>

ご利用の IdP (Identity Provider)  (Okta、Microsoft Entra ID、または SAML/OIDC に準拠した任意の IdP) でアプリケーションを作成し、以下の認証情報を Cognition の担当チームに共有してください。

| Connection Type        | Protocol                       | What to Provide                                |
| :--------------------- | :----------------------------- | :--------------------------------------------- |
| **Okta**               | OIDC (Okta Workforce Identity) | Okta ドメイン、クライアント ID、クライアントシークレット、スコープ          |
| **Microsoft Entra ID** | OIDC (Microsoft Entra ID)      | Microsoft Entra ID ドメイン、クライアント ID、クライアントシークレット |
| **SAML**               | SAML 2.0 (any IdP)             | サインイン URL、X.509 署名証明書                          |
| **Generic OIDC**       | OIDC                           | Discovery URL、クライアント ID、クライアントシークレット、スコープ      |

<Note>
  また、Devin が IdP から提供されるどのメールアドレスを信頼すべきか判断できるよう、確認済みのメールドメインも共有してください。
</Note>

<div id="what-happens-after-setup">
  ### セットアップ後の動作
</div>

Cognitionチームがお客様の認証情報を受け取ると、SSO (シングルサインオン)  (シングルサインオン) 接続を設定します。セットアップが完了すると、次の状態になります。

1. SSO (シングルサインオン) 接続がお客様のDevin Enterpriseに紐付けられます
2. **ログイン時の自動メンバー追加** が有効になり、SSO (シングルサインオン) 経由で認証したユーザーは自動的にお客様のEnterpriseに追加されます
3. お客様のメールドメインが信頼済みとして登録され、それらのドメインのメールアドレスのみ受け付けられます
4. **グループベースのロール割り当て (RBAC) ** が有効になり、ログイン時に送信されるIdPグループをDevinのロールにマッピングできるようになります
5. 既定のソーシャルログイン (Google、GitHub) が無効になり、SSO (シングルサインオン) が必須の認証方法になります

<div id="the-user-login-experience">
  ### ユーザーのログインフロー
</div>

1. ユーザーがお使いのDevin URLにアクセスします
2. 設定済みのIdP (Okta、Microsoft Entra ID など) にリダイレクトされます
3. ユーザーが通常どおり認証します
4. IdPがユーザー情報とグループ所属情報をDevinに送信します
5. Devinは自動的に以下を行います:
   * 初回ログイン時にはユーザーのアカウントを作成します (ジャストインタイムプロビジョニング)
   * デフォルトのEnterprise Memberロールを割り当てます
   * IdPグループ所属情報を同期し、新しいグループを追加して滞留したグループを削除します
   * ログインをEnterpriseの監査ログに記録します

***

<div id="self-service-administration">
  ## セルフサービスによる管理
</div>

以下の機能は、Enterprise 管理者がDevin webapp上で直接利用できます。

<div id="idp-group-management">
  ### IdP グループ管理
</div>

**設定 → Enterprise → Identity Provider Groups**

* ユーザーログインを通じて同期されたすべてのグループを閲覧する
* グループを Enterprise 全体のロールに割り当てる (例: 「`Engineering-Admins` の全員に Enterprise Admin ロールを付与する」)
* グループを特定の org に特定のロールで割り当てる (例: 「`Team-Backend` に Backend org で Member 権限を付与する」)
* 複数の org にまたがってグループを一括で追加／削除する
* 各グループがいくつの org に割り当てられているかを閲覧する

<div id="member-management">
  ### メンバー管理
</div>

**設定 → Enterprise → メンバー**

* 所属するIdP グループを含む、Enterprise のすべてのメンバーを閲覧する
* メールで新しいメンバーを招待する
* メンバーのロールを変更する
* メンバーを削除する

<div id="custom-roles">
  ### カスタムロール
</div>

**設定 → Enterprise → ロール**

* 細かな権限を設定したカスタムロールを作成
* カスタムロールを個々のユーザーまたはIdPグループに割り当て

詳細は、[Custom Roles & RBAC](/ja/enterprise/security-access/custom-roles)を参照してください。

<div id="api-for-automation">
  ### 自動化用API
</div>

Devin では、メンバーとグループの管理を自動化するための [V3 API](/ja/api-reference/v3/overview) を提供しています。

| 操作                            | APIエンドポイント                                                                                                                                                |
| :---------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 直接割り当てられたロールを持つメンバーを一覧表示      | [`GET /v3/enterprise/members/users`](/ja/api-reference/v3/users/members-users)                                                                            |
| IdPグループからロールを付与されているメンバーを一覧表示 | [`GET /v3/enterprise/members/idp-users`](/ja/api-reference/v3/users/members-idp-users)                                                                    |
| メールアドレスでユーザーを一括招待             | [`POST /v3/enterprise/members/users`](/ja/api-reference/v3/users/post-members-users)                                                                      |
| メンバーを削除                       | [`DELETE /v3/enterprise/members/users/{user_id}`](/ja/api-reference/v3/users/delete-members-users)                                                        |
| メンバーのEnterpriseロールを更新         | [`PATCH /v3/enterprise/members/users/{user_id}`](/ja/api-reference/v3/users/patch-members-users)                                                          |
| すべてのロールを一覧表示                  | [`GET /v3/enterprise/roles`](/ja/api-reference/v3/roles/roles)                                                                                            |
| 初回ログイン前にIdPグループを登録            | [`POST /v3/enterprise/idp-groups`](/ja/api-reference/v3/idp-groups/post-enterprise-idp-groups)                                                            |
| 登録済みのIdPグループを一覧表示             | [`GET /v3/enterprise/idp-groups`](/ja/api-reference/v3/idp-groups/enterprise-idp-groups)                                                                  |
| ロールの割り当てを含むIdPグループを一覧表示       | [`GET /v3/enterprise/members/idp-groups`](/ja/api-reference/v3/idp-groups/members-idp-groups)                                                             |
| グループにEnterpriseロールを割り当て       | [`POST /v3/enterprise/members/idp-groups/{idp_group_name}`](/ja/api-reference/v3/idp-groups/post-members-idp-groups)                                      |
| ロールを指定してグループを組織に割り当て          | [`POST /v3/enterprise/organizations/{org_id}/members/idp-groups/{idp_group_name}`](/ja/api-reference/v3/idp-groups/post-organizations-members-idp-groups) |

<Note>
  V1とV2は非推奨です。新しい自動化にはすべてV3を使用してください。詳細は[移行ガイド](/ja/api-reference/getting-started/migration-guide)を参照してください。
</Note>

***

<div id="2-user-provisioning-options">
  ## 2. ユーザープロビジョニングのオプション
</div>

Devin は、2 つのプロビジョニングモデルをサポートしています。

<div id="option-a-login-based-provisioning">
  ### オプション A: ログインベースのプロビジョニング
</div>

SCIM を使用しない場合、すべてのユーザーおよびグループ管理は、SSO (シングルサインオン) ログインイベントと Devin UI/API を通じて行われます。

1. **ジャストインタイム プロビジョニング** — ユーザーは初回の SSO (シングルサインオン) ログイン時に、デフォルトの Enterprise ロールで自動的に作成されます
2. **ログインごとの完全なグループ同期** — ユーザーがログインするたびに、Devin はそのユーザーの IdP グループとの差分を完全に確認し、新しいグループを追加し、不要になったグループを削除します
3. **グループベースの RBAC** — Devin の設定で、IdP グループを Enterprise ロールや org へのアクセスにマッピングでき、次回のログイン時に反映されます
4. **自動化のための V3 API** — 招待、削除、ロール変更をスクリプト化して、プロビジョニング／プロビジョニング解除のギャップを埋められます
5. **監査ログ** — すべてのログインが記録されるため、誰が Devin にアクセスしたかを確認できます

実際の運用におけるログインベースのプロビジョニングと SCIM の比較は、以下のとおりです。

<div id="user-provisioning-login-triggered-only">
  #### ユーザープロビジョニング: ログイン時のみ
</div>

|                  | SCIM あり                                   | ログインベース                                                                       |
| :--------------- | :---------------------------------------- | :---------------------------------------------------------------------------- |
| **ユーザーが作成される方法** | ユーザーが割り当てられると、IdP が直ちに Devin にユーザー作成を反映する | ユーザーは、初回の SSO (シングルサインオン)  ログイン後、または UI もしくは API 経由で手動招待された後にのみ Devin 上に作成される |
| **発生するタイミング**    | 管理者がユーザーにアプリを割り当てる → 数秒以内にユーザーが表示される      | 管理者がユーザーにアプリを割り当てる → ユーザーがログインするまで、Devin では何も起こらない                            |
| **事前プロビジョニング**   | ユーザーがアプリを初めて利用する前に、アカウントの準備が完了している        | 管理者が Devin の UI または API で明示的に招待しない限り、事前プロビジョニングは行われない                         |

新入社員をオンボーディングする際、管理者は事前に招待する (**Settings → Enterprise → Members → Invite**、または API 経由) か、初回ログイン時に自動的にプロビジョニングさせることができます。

<div id="user-deprovisioning-manual-only">
  #### ユーザーのプロビジョニング解除: 手動のみ
</div>

|               | SCIM あり                                                     | ログインベース                                                  |
| :------------ | :---------------------------------------------------------- | :------------------------------------------------------- |
| **ユーザーの削除方法** | IdP がユーザーを無効化または削除すると、Devin がそのユーザーのEnterpriseメンバーシップを即座に削除 | IdP でユーザーを無効化または削除しても、Devin 側では何も起こらない                   |
| **オフボーディング**  | オフボードされた従業員は数分以内にEnterpriseメンバーシップを失う                       | オフボードされた従業員は、Devin から手動で削除され、かつセッションの有効期限が切れるまでアクセスを保持する |
| **コンプライアンス**  | コンプライアンス対応を自動化 — 孤立したアカウントは発生しない                            | 管理者が両方のシステムを管理しない限り、孤立したアカウントが発生するリスクがある                 |

<Warning>
  これはログインベースのプロビジョニングにおける運用上の最大のギャップです。従業員をオフボードする際は、管理者が別途 Devin からそのユーザーを削除する必要があります (**Settings → Enterprise → Members → Remove**、または API 経由) 。これを自動化するには SCIM を使用してください。
</Warning>

<div id="group-sync-login-time-only-not-real-time">
  #### グループ同期: ログイン時のみで、リアルタイムではない
</div>

|               | SCIMあり (グループプッシュ)                   | ログインベース                                              |
| :------------ | :---------------------------------- | :--------------------------------------------------- |
| **同期のタイミング**  | IdP がグループメンバーシップの変更をリアルタイムで反映       | グループが同期されるのは、ユーザーのログイン時のみ                            |
| **グループへの追加**  | 管理者がユーザーをグループに追加 → Devin に即座に反映される  | 管理者がユーザーをグループに追加 → Devin が認識するのは、ユーザーの次回ログイン時        |
| **グループからの削除** | 管理者がユーザーをグループから削除 → Devin に即座に反映される | 管理者がユーザーをグループから削除 → Devin には次回ログインまで以前のメンバーシップが表示される |
| **基準となる情報源**  | IdP が常に基準となる情報源                     | IdP が基準となる情報源なのはログイン時のみ — ログインとログインの間にずれが生じることがある    |

管理者が誰かの IdP グループを変更した場合 (たとえば Engineering から Sales に移動した場合) 、Devin に反映されるのは、そのユーザーが再度ログインしたときです。それまでは、ユーザーは以前のグループベースのロールと組織へのアクセスを保持します。

<div id="option-b-scim-provisioning">
  ### オプションB: SCIMプロビジョニング
</div>

Devinは、IdPからの自動リアルタイムプロビジョニングにSCIM 2.0をサポートしています。

* **事前プロビジョニング** — ユーザーがアプリに割り当てられると、初回ログイン前でもDevinに作成されます
* **自動プロビジョニング解除** — IdPでユーザーを無効化または割り当て解除すると、Enterpriseのメンバーシップが直ちに削除されます
* **リアルタイムグループ同期** — グループメンバーシップの変更は、次回のログインを待たずに発生時点でプッシュされます

セットアップ手順については、[SCIM Setup](/ja/enterprise/security-access/scim)を参照してください。

***

<div id="3-configuring-idp-managed-groups">
  ## 3. IdP 管理グループの設定
</div>

このセクションでは、Devin のグループモデルの仕組みと、ログインベースのグループ同期のために IdP を正しく設定する方法について説明します。[SCIM](/ja/enterprise/security-access/scim) を利用している場合、グループは IdP からプッシュされるため、このクレーム設定は不要です。

<div id="context-how-devin-uses-idp-groups">
  ### 前提情報: Devin が IdP Groups を利用する方法
</div>

IdP が基準となります。グループは IdP のディレクトリで定義され、グループメンバーシップはログイン時に SAML/OIDC のクレームを通じて、または SCIM group push を介して Devin に渡されます。重要なのは、適切なグループが IdP から送信され、Devin で正しくマッピングされていることを確認することです。

<div id="step-1-define-groups-in-the-idp">
  ### ステップ 1: IdP でグループを定義する
</div>

IdP の管理コンソールで設定します (以下の例では Okta を利用します) :

1. **Directory → Groups** に移動します
2. Devin のアクセスレベルに対応するグループを作成します (例: `Devin-Engineering`, `Devin-Admins`, `Devin-DataScience`)
3. ユーザーをこれらのグループに割り当てます

これらは IdP ネイティブのグループです。どのユーザーがどのグループに属するかは、IdP が基準となります。

<div id="step-2-configure-group-claims-in-the-idp-app">
  ### ステップ 2: IdP アプリでグループクレームを設定する
</div>

Devin がグループ情報を読み取れるようにするため、認証応答にグループを含める必要があります。

<div id="for-saml-connections">
  #### SAML 接続の場合
</div>

1. **Applications → \[Devin App] → SAML Settings → Edit** に移動します
2. **Group Attribute Statements** で、以下を追加します:
   * **Name:** `groups`
   * **Filter:** "Starts with" → `Devin-` (または、より複雑なパターンには "Matches regex" を利用します)
3. これにより、IdP は一致するグループ名を SAML アサーションに含めます

<div id="for-oidc-connections">
  #### OIDC 接続の場合
</div>

1. **Applications → \[Devin App] → Sign On → Edit** に移動します
2. **OpenID Connect ID Token → Groups claim type** で「Filter」を選択します
3. フィルターが Devin のグループに一致するよう設定します (例: 「Starts with」 → `Devin-`)

<Tip>
  `Devin-` のようなプレフィックスでフィルタリングすると、必要なグループだけが送信されます。組織内のすべての IdP グループを送信する必要はありません。
</Tip>

<div id="step-3-map-groups-to-roles-and-orgs-in-devin">
  ### ステップ 3: Devin でグループをロールと組織にマッピングする
</div>

ログイン時にグループ情報が渡されるようになったら、Devin でそれらをマッピングします。

<div id="in-the-devin-ui">
  #### Devin UIで
</div>

1. **Settings → Enterprise → Identity Provider Groups**
2. そのグループのメンバーが1人でもログインすると、グループが自動的に表示されます
3. グループをクリック → Enterprise レベルのロール (例: Enterprise Admin またはカスタムロール) を割り当てます
4. グループをクリック → 特定のorgに、特定のorgレベルのロールを割り当てます

<div id="via-the-api-for-pre-setup-or-automation">
  #### API 経由 (事前設定または自動化の場合)
</div>

* ユーザーがログインする前にグループを登録する: [`POST /v3/enterprise/idp-groups`](/ja/api-reference/v3/idp-groups/post-enterprise-idp-groups)
* 登録済みグループに Enterprise ロールを割り当てる: [`POST /v3/enterprise/members/idp-groups/{idp_group_name}`](/ja/api-reference/v3/idp-groups/post-members-idp-groups)
* 登録済みグループを組織に割り当て、組織レベルのロールを付与する: [`POST /v3/enterprise/organizations/{org_id}/members/idp-groups/{idp_group_name}`](/ja/api-reference/v3/idp-groups/post-organizations-members-idp-groups)
* グループとロールの割り当てを一覧表示する: [`GET /v3/enterprise/members/idp-groups`](/ja/api-reference/v3/idp-groups/members-idp-groups)

グループ名は、IdP がログインアサーションで送信する名前と完全に一致している必要があります。登録済みグループがアクセスを付与するのは、そのグループのメンバーがログインした後です。

<div id="step-4-if-migrating-from-scim-groups-in-other-apps">
  ### ステップ4: 他のアプリでSCIM Groupsから移行する場合
</div>

ツール全体 (Devinだけでなく) で、SCIM管理グループからIdP管理グループへ移行する場合は、次の手順に従ってください。

1. 他のアプリで**SCIM Group Importingを停止**します:
   * IdPでアプリの**Provisioning → Integration**タブを開き、"Import Groups" のチェックを外します
   * これにより、下流アプリがグループの基準となるものではなくなります
2. IdP Directoryで**対応するグループを作成**します:
   * **Directory → Groups**に移動し、下流アプリに存在していたグループを反映したグループを作成します
   * ユーザーをそれらのIdPネイティブなグループに割り当てます
3. **Group Pushを設定**します (対応しているアプリの場合) :
   * アプリのIdP設定で、**Push Groups**タブ → グループ名で検索 → 既存の下流グループにリンクします
   * これにより、IdPがアプリ内のメンバーシップを上書きし、IdPが唯一の基準となるものになります
   * ログインベースのグループ同期では、Devinはログインアサーションからグループを直接読み取るため、Group Pushは不要です。([SCIM](/ja/enterprise/security-access/scim) 経由でDevinをプロビジョニングする場合は、**Push Groups**タブでグループをプッシュしてください。)
4. 他のアプリで**SCIM Group Syncを無効化**します:
   * 下流アプリが再び基準となるものとして扱われないよう、"Import Groups" がオフのままであることを確認します

Devinについては、特別な移行は必要ありません。上記のステップ1〜3 (IdPでグループを定義し、クレームを設定し、Devinでマッピングを設定する) が完了していれば十分です。

***

<div id="key-considerations">
  ## 主な注意点
</div>

<AccordionGroup>
  <Accordion title="IdP でグループ名を変更した場合">
    ログイン同期グループでは、グループ名の変更は新しいグループとして扱われます。以前のグループのロールマッピングは自動的には引き継がれないため、Devin の設定で新しいグループ名を再設定する必要があります。SCIM 経由で名前が変更されたグループはマッピングを維持します。
  </Accordion>

  <Accordion title="グループに追加されても、すぐに Devin にアクセスできるわけではありません">
    SCIM を使用しない場合、Devin にマッピングされた IdP グループにユーザーを追加しても、そのユーザーがログインするまではアクセス権は付与されません。
  </Accordion>

  <Accordion title="グループから削除されても、すぐに Devin のアクセスは削除されません">
    SCIM を使用しない場合、ユーザーを IdP グループから削除しても、そのユーザーの Devin へのアクセスはすぐには取り消されません。次回ログイン時に Devin が同期を行い、滞留したグループメンバーシップを削除します。グループ外で直接割り当てられたメンバーシップには影響しません。
  </Accordion>

  <Accordion title="グループ名は完全一致である必要があります">
    IdP のグループ名は、Devin が認識する名前と完全に一致している必要があります。大文字と小文字は区別されます。
  </Accordion>

  <Accordion title="ネストされたグループには対応していません">
    Devin はネストされたグループや階層型グループをサポートしていません。IdP から親グループが送信されても、子グループのメンバーは自動的には含まれません。各グループを明示的に割り当てる必要があります。
  </Accordion>
</AccordionGroup>

***

<div id="recommended-setup-without-scim">
  ## SCIM なしの推奨設定
</div>

[SCIM](/ja/enterprise/security-access/scim) を利用できない場合にできるだけ厳密に制御するには、次の方法に従ってください。

<Steps>
  <Step title="Identity Provider を設定する（基準となる情報源）">
    1. グループを定義します: `Devin-Admins`、`Devin-Backend`、`Devin-Frontend` など
    2. ユーザーをグループに割り当てます
    3. 「Starts with: `Devin-`」でフィルタした SAML/OIDC のグループクレームを設定します
  </Step>

  <Step title="Devin はログインのたびに同期します">
    ユーザーが SSO (シングルサインオン) 経由でログインすると、Devin は自動的に以下を実行します:

    * 新規ユーザーの場合は自動で作成します
    * グループを完全同期します (新しいグループを追加し、滞留しているグループを削除します)
    * グループからロール および org へのマッピングを即座に適用します
  </Step>

  <Step title="任意: V3 API で自動化する">
    SCIM で補いきれない部分を埋めるために、定期実行ジョブを設定します:

    1. IdP API からアクティブなユーザーを取得します
    2. [`GET /v3/enterprise/members/users`](/ja/api-reference/v3/users/members-users) から Devin のメンバーを取得します
    3. [`POST /v3/enterprise/members/users`](/ja/api-reference/v3/users/post-members-users) で新入社員を招待します
    4. [`DELETE /v3/enterprise/members/users/{user_id}`](/ja/api-reference/v3/users/delete-members-users) で退職者を削除します

    これにより、SCIM がなくてもプッシュ型のプロビジョニングとプロビジョニング解除を実現できます。
  </Step>
</Steps>

<div id="what-this-gives-you">
  ### これにより得られること
</div>

* グループ構成とメンバーシップの単一の基準となるIdP
* ログインのたびにグループベースのアクセス制御を自動で適用
* 通常はSCIMが担う部分を補完する、APIによるプロビジョニング／デプロビジョニング
* すべてのログインとメンバーシップの変更に対する完全な監査証跡

<div id="limitations-of-login-based-provisioning">
  ### ログインベースのプロビジョニングの制限事項
</div>

* **ログイン間でリアルタイムにグループを同期できない** — グループが更新されるのは、ユーザーがログインしたときのみです
* **自動プロビジョニング解除なし** — IdP でユーザーを削除しても、Devin で手動で削除するまで何も起こりません
* **停止/再有効化など、IdP 起点のライフサイクルイベントなし**

[SCIM](/ja/enterprise/security-access/scim) を使用すると、グループの変更がリアルタイムで同期され、プロビジョニング解除によりログインを待たずに Enterprise のメンバーシップが即座に削除されます。どちらのモデルでも、既存のセッションは期限切れまでアクティブなままです。
