# AWS Cognito の設定

{% hint style="warning" %}
このガイドでは、ドキュメント用の保護されたサインイン画面の設定方法を説明します。このガイドを進める前に、まず最初に次のプロセスを実施していることを確認してください： [認証されたアクセスを有効化する](https://gitbook-open-v2-preview.gitbook.workers.dev/url/gitbook.com/docs/documentation/ja-gitbook-documentation/publishing-documentation/authenticated-access/enabling-authenticated-access).
{% endhint %}

AWS Cognito を使用して認証付きアクセスで GitBook サイトを設定する手順は次のとおりです：

{% stepper %}
{% step %}
**新しい AWS Cognito アプリケーションを作成する**

AWS ダッシュボードから新しい AWS Cognito アプリケーションを作成します。
{% endstep %}

{% step %}
**AWS Cognito 統合をインストールして構成する**

AWS Cognito 統合をインストールし、必要な構成を追加します。
{% endstep %}

{% step %}
**適応コンテンツ用に AWS Cognito を構成する（オプション）**

GitBook の適応コンテンツと連携するように AWS Cognito を構成します。
{% endstep %}
{% endstepper %}

### 新しい AWS Cognito アプリケーションを作成する

Cognito の目的のユーザープールに移動し、\[App integration] をクリックします。Cognito ドメインを控えておいてください。統合の構成で必要になります。

下までスクロールして「Create app client」をクリックします。アプリタイプでは「Confidential client」を選択します。さらに下の Hosted UI 設定へスクロールします。許可されたコールバック URL に、統合をスペースにインストールした際に GitBook から取得したコールバック URL を入力します。

さらに下の「OAuth 2.0 grant types」で「Authorization code grant」が選択されていることを確認します。

「OpenID connect scopes」では、OpenID が選択されていることを確認します。

下にスクロールして「Create app client」をクリックします。

作成したアプリクライアントをクリックし、Client ID と Client Secret を控えておきます。

### AWS Cognito 統合をインストールして構成する

GitBook アプリ内の integrations に移動し、カテゴリで authenticated access を選択して AWS Cognito 統合をインストールします。

<figure><img src="https://4217681718-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkEGS7hzeqa35sMXQZ4X%2Fuploads%2FCZy21M4LIPwMVSxI3ec1%2FScreen%20Shot%202024-12-13%20at%203.37.39%20PM.png?alt=media&#x26;token=4e31d496-04eb-4d00-ac45-011b543edfe4" alt="A GitBook screenshot showing the AWS Cognito integration install screen"><figcaption></figcaption></figure>

サイトにインストールしたら、configuration に移動して Save ボタンのすぐ上に表示されている Callback URL を控えておいてください。Cognito の設定で必要になります。

統合をインストールしたスペースの Cognito 統合の構成画面を開きます。

次の画像のようになっているはずです：

<figure><img src="https://4217681718-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkEGS7hzeqa35sMXQZ4X%2Fuploads%2Fgy177CzFZiy6U4IntLUE%2FScreen%20Shot%202024-12-13%20at%203.41.57%20PM.png?alt=media&#x26;token=3823d5cb-56e0-4e02-abd6-6d6d66cacf71" alt="A GitBook screenshot showing the AWS Cognito configuration screen"><figcaption></figcaption></figure>

Client ID、Cognito Domain、および Client Secret には、Cognito から取得した値を貼り付けます。

保存（Save）を押します。

次に、GitBook で統合のモーダルを閉じ、Manage site ボタンをクリックします。に移動し、 **オーディエンス**を選択し、バックエンドとして Okta を選びます。 **認証付きアクセス**、およびバックエンドとして Cognito を選択します。それから、クリックします **オーディエンスを更新**。\
\
サイトは現在、Auth0 アプリケーションによって制御される認証付きアクセスの背後に公開されています。試すには Visit をクリックしてください。Okta でサインインするよう求められ、サイトが Auth0 を使用した認証付きアクセスの背後に公開されていることが確認できます。 **公開**。\
\
サイトは現在、Auth0 アプリケーションによって制御される認証付きアクセスの背後で公開されています。試すには Visit をクリックしてください。Cognito でのサインインが求められ、サイトが Auth0 を使用した認証付きアクセスの背後で公開されていることが確認されます。

### 適応コンテンツ用に AWS Cognito を構成する（オプション）

認証付きアクセスで GitBook の Adaptive Content を活用するには、Amazon Cognito ユーザープールの ID トークンにカスタムクレームを含めるように構成する必要があります。

これは通常、次を作成することで行われます： [Cognito Lambda トリガー](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-token-generation.html)—具体的には *Pre Token Generation* Lambda—JSON ペイロードを返してカスタムクレームを上書きまたは追加するものです。これらのクレームには、ユーザーの役割、サブスクリプション階層、またはコンテンツに関連するその他のメタデータが含まれる場合があります。

これがその例です：

```javascript
export const handler = async (event, context) => {
  // イベントリクエストからユーザー属性を取得する
  const userAttributes = event.request.userAttributes;

  // イベントレスポンスに追加のクレームを追加する
  event.response = {
    "claimsAndScopeOverrideDetails": {
      "idTokenGeneration": {},
      "accessTokenGeneration": {
        "claimsToAddOrOverride": {
          "products": ['api', 'sites', 'askAI'],
          "isBetaUser": true,
          "isAlphaUser": true,
        }
      }
    }
  };
  // Amazon Cognito に返す
  context.done(null, event);
};
```

<figure><img src="https://4217681718-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkEGS7hzeqa35sMXQZ4X%2Fuploads%2FwwKLiRUOJ27tjJCPc1Vd%2FScreenshot%202025-06-30%20at%2017.31.23.png?alt=media&#x26;token=f015ad33-1e96-47d4-82a5-e3b259f55a0e" alt=""><figcaption></figcaption></figure>

追加されると、これらのキーと値のペアは認証トークンに含まれて GitBook に渡され、認証されたユーザーのプロファイルに応じてサイトが動的にコンテンツを適応させることができます。
