# SSO & SAML

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

## メールドメインによるシングルサインオン

組織を作成または管理する際に、GitBook組織へのアクセスを許可したいメールドメインの一覧を追加できます。これは、設定したSSOドメインと一致する確認済みメールアドレスを持つ誰でも組織に参加できることを意味します。

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

<figure><img src="https://4217681718-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkEGS7hzeqa35sMXQZ4X%2Fuploads%2FF860Y1oqJmnsPKOjZ1n2%2Faccount-settings-sso.svg?alt=media&#x26;token=c63d515a-a261-4f6e-b3aa-c39f3d03f0b4" alt="A GitBook screenshot showing how to configure SSO"><figcaption><p>組織のSSOを設定します。</p></figcaption></figure>

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

**SAMLベースのシングルサインオン** (SSO) は、選択したアイデンティティプロバイダー（IdP）を通じてメンバーにGitBookへのアクセスを提供します。

GitBookは既存のアイデンティティプロバイダー（IdP）と簡単に統合できるため、従業員は他のサービスプロバイダーと同じ資格情報とログイン体験を使ってGitBookにシングルサインオンでアクセスできます。

SSOを使用すると、従業員はGitBookのログインページの代わりに馴染みのあるアイデンティティプロバイダーのインターフェースを使ってGitBookにログインできます。従業員のブラウザはその後GitBookに転送されます。SSOが有効化され、GitBook自身のログイン機構が無効化されると、IdPがGitBookへのアクセスを許可します。このようにして、認証のセキュリティはIdPに移行され、他のサービスプロバイダーと連携されます。

## GitBookのSSOに必要な前提条件 <a href="#prerequisites-for-sso-with-gitbook" id="prerequisites-for-sso-with-gitbook"></a>

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

### GitBookでのセットアップ <a href="#setup-on-gitbook" id="setup-on-gitbook"></a>

あなたは [組織の管理者](https://gitbook.com/docs/documentation/ja-gitbook-documentation/member-management/roles#admin) でなければなりません。SSOを有効にするにはGitBook組織のために

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

{% hint style="info" %}
組織の管理者は依然として非SSOの方法でサインインできるため、Google、GitHub、またはメールのボタンが表示されることがあります。これは期待される挙動であり、 **SSOの強制** が有効でも同様です。&#x20;

不適切な SSO 設定によって組織からロックアウトされるのを防ぎます。管理者は常にサインインして SSO 設定を削除または修正できます。
{% endhint %}

SAML プロバイダーを登録するために IdP メタデータから以下が必要です：

* A **ラベル** – これは任意の文字列で、ログインページに表示されます
* An **エンティティ ID**
* A **シングルサインオン URL**
* An **X.509 証明書** – 証明書全体をコピー＆ペーストすることを忘れないでください！

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

ほとんどのSAML 2.0準拠のアイデンティティプロバイダーは、サービスプロバイダー（この場合はGitBook）に関する同じ情報を設定のために必要とします。これらの値はあなたのGitBook組織特有のもので、次で確認できます **設定 -> SSO** SSOを有効にしたいGitBook組織のタブ。

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

GitBookは次を要求します **NameID** にユーザーのメールアドレスを含めること。技術的には以下を探しています： `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress` をName-IDフォーマットとして — 多くのプロバイダー（例えばGoogle）は次のようなフォーマットを設定できるようにします **メール**.

### カスタム属性

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を強制する（Enforce SSO）」が有効になっていない場合、組織の管理者は組織設定のメンバーページからユーザーを招待できます。

組織で「SSOを強制する（Enforce SSO）」が有効になっている場合、管理者はGitBookの `招待（invites）` 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>"] }'
```
