# SSO と SAML

小規模なチームや、きめ細かな管理を望む人にとっては、組織メンバーを手動で管理する方法で問題ありませんが、場合によっては、より自動化された方法でアクセスを開放したいこともあります。GitBook では、基本的なメールドメイン SSO と、より複雑な SAML 統合という 2 つの方法でこれを設定できます。

## メールドメイン経由のシングルサインオン

組織を作成または管理する際に、GitBook 組織へのアクセスを許可したいメールドメインの一覧を追加できます。これにより、設定した SSO ドメインに一致する確認済みメールアドレスを持つすべてのユーザーが、組織に参加できるようになります。

メールドメイン SSO は、 **SSO** 組織の **設定**のセクションで有効にできます。SSO アクセスを許可したいメールドメインをカンマ区切りで入力すれば設定完了です。

<figure><img src="/files/9f0d5ccb8a2726290568966285106b4392ed93f4" alt="A GitBook screenshot showing how to configure SSO"><figcaption><p>組織の SSO を設定します。</p></figcaption></figure>

{% hint style="info" %}
SSO メールドメイン経由で参加したユーザーには、デフォルトでゲストアクセスが付与されます。役割はいつでも組織設定のメンバーセクションで変更できます。
{% endhint %}

**SAML ベースのシングルサインオン** （SSO）は、任意の ID プロバイダー（IdP）を通じてメンバーに GitBook へのアクセスを提供します。‌

GitBook は既存の ID プロバイダー（IdP）と簡単に統合できるため、他のサービスプロバイダーと同じ認証情報とログイン体験を使って、従業員に GitBook へのシングルサインオンを提供できます。‌

SSO を使用すると、従業員は GitBook のログインページではなく、使い慣れた ID プロバイダーのインターフェースを使用して GitBook にログインできます。その後、従業員のブラウザーが GitBook へ転送します。SSO が有効になり、GitBook 独自のログイン機構が無効化されている場合、IdP が GitBook へのアクセスを許可します。これにより、認証セキュリティはお使いの IdP に移行され、他のサービスプロバイダーと連携して管理されます。‌​

## ​GitBook で SSO を利用するための前提条件 <a href="#prerequisites-for-sso-with-gitbook" id="prerequisites-for-sso-with-gitbook"></a>

* 会社の ID プロバイダー（IdP）は、 **SAML 2.0** 標準をサポートしている必要があります。
* IdP に対する管理者権限を持っている必要があります。
* SAML を設定したい GitBook 組織の管理者である必要があります。

### ​GitBook での設定 <a href="#setup-on-gitbook" id="setup-on-gitbook"></a>

GitBook 組織で SSO を有効にするには、 [組織管理者](/docs/documentation/ja-gitbook-documentation/collaboration/member-management/roles.md#admin) である必要があります。‌

IdP で SSO を設定した後、メタデータを入力できるようになります。設定が正常に完了すると、管理者には確認ダイアログが表示され、エンドユーザー向けの SSO ログイン URL が表示されます。 **設定完了時に GitBook は案内メールを送信しません**。会社の従業員に通知し（ログイン URL を伝えることを含む）、SSO 経由で GitBook にアクセスできるようにする責任は管理者にあります。‌

{% hint style="info" %}
組織管理者は引き続き SSO 以外の方法でもサインインできるため、Google、GitHub、またはメールのボタンが表示される場合があります。これは、 **SSO を強制** が有効な場合でも想定どおりの動作です。

これにより、SSO の設定ミスによって組織から締め出されることを防ぎます。管理者は常にサインインして、SSO 設定を削除または修正できます。
{% endhint %}

SAML プロバイダーを登録するには、IdP のメタデータから次の情報が必要です。

* 1つ目は **ラベル** – これは任意の値で構いません。ログインページに表示されます
* 1 つの **エンティティ ID**
* 1つ目は **シングルサインオン URL**
* 1 つの **X.509 証明書** – 証明書全体を必ずコピー＆ペーストしてください。

### ​IdP での設定 <a href="#setup-on-the-idp" id="setup-on-the-idp"></a>

ほとんどの SAML 2.0 準拠 ID プロバイダーでは、設定にあたってサービスプロバイダー（この場合は GitBook）に関する同じ情報が必要です。これらの値は GitBook 組織ごとに固有であり、SSO を有効にしたい GitBook 組織の **Settings -> SSO** タブで確認できます。‌

これらの値の多くは、SAML の設定を完了するために IdP に直接コピーできます。

GitBook では、 **NameID** にユーザーのメールアドレスが含まれている必要があります。技術的には、次の形式を想定しています。 `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress` を Name-ID 形式として使用します。多くのプロバイダー（Google など）では、次のような形式を設定できます。 **EMAIL**.

### カスタム属性

GitBook は、SAML アサーション応答から次のカスタム属性を取得し、ユーザー作成時に使用します。

| フィールド        | 説明                                                               |
| ------------ | ---------------------------------------------------------------- |
| `first_name` | `first_name` 、 `last_name` フィールドは結合され、GitBook 内でのユーザーの表示名が生成されます |
| `last_name`  | `first_name` 、 `last_name` フィールドは結合され、GitBook 内でのユーザーの表示名が生成されます |

## ​エンドユーザーアカウントの作成 <a href="#creating-end-user-account" id="creating-end-user-account"></a>

メンバーを追加するには、IdP でそのメンバーのアカウントを作成します。新しいメンバーが初めて IdP 経由で GitBook にログインすると、自動 IdP プロビジョニングによって GitBook アカウントが作成されます。ユーザーは組織メンバーとして組織リソースにアクセスできます。

{% hint style="danger" %}
設定には小文字のメールアドレスが必要です。大文字小文字が混在したメールアドレスは使用しないでください。‌
{% endhint %}

## ​アカウントの削除 <a href="#removing-end-user-accounts" id="removing-end-user-accounts"></a>

IdP からメンバーを削除すると、そのユーザーは対応する GitBook アカウントにサインインできなくなりますが、 **GitBook からアカウントが削除されるわけではありません**。あわせて GitBook 組織からもアカウントを削除することを推奨します。

## アクセスの制御

SAML SSO を設定すると、誰が GitBook アカウントにアクセスできるかを制御する責任は IdP 側にあります。

## ​セキュリティに関する注意 <a href="#security-notice" id="security-notice"></a>

Identity Provider から取得したものと同じメールアドレスで既存の GitBook アカウントをお持ちで、かつサインインしようとしている組織のメンバーでない場合、セキュリティ上の理由により、SAML 設定では自動的にその組織へ追加することはできません。選択肢は 2 つあります。

1. 既存の GitBook アカウントを削除してから、目的の組織に SAML でログインしてください。その後、GitBook が新しいアカウントを作成し、組織に追加します
2. または、管理者に組織へ招待してもらってください。

組織で「SSO を強制」が有効になっていない場合、組織の管理者は組織設定の Members ページからユーザーを招待できます。

組織で「SSO を強制」が有効になっている場合、管理者は GitBook の `招待` API エンドポイントを使用して、ユーザーを組織に招待する必要があります。この API の呼び出しは次のようになります。

```
curl --request POST --header "Authorization: Bearer <your_access_token>" --url "https://api.gitbook.com/v1/orgs/<org_id>/invites" --header 'Content-Type: application/json' --data-raw '{ "sso": true, "role": "<role>", "emails":["<email>"] }'
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gitbook.com/docs/documentation/ja-gitbook-documentation/akaunto/sso-and-saml.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
