# SAML SSO認証

## 概要 <a href="#id-.authenticatinguserswithldapv2.x-installingldapsupportforguacamole" id="id-.authenticatinguserswithldapv2.x-installingldapsupportforguacamole"></a>

Keeperコネクションマネージャーは、任意のSAML 2.0互換IDプロバイダと連携してユーザーを認証するように設定できます。ユーザーにSAMLでのログインを強制することもできますし、以下の画像に見られるようにSAMLをホーム画面のログインのオプションとすることもできます。

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FWv7CAp26Gq24VsCVXgec%2Fimage.png?alt=media&#x26;token=4dd694d1-1d68-47fc-a943-5e104b804d75" alt="" width="563"><figcaption><p>オプションのSAMLログイン設定</p></figcaption></figure>

### Docker自動インストール方法

以下の`reconfigure`コマンドを実行し、事前に入力された選択肢をすべてそのままEnterキーを推して承認してください。SAMLのプロンプトに到達するまで進めます。

```sh
sudo ./kcm-setup.run reconfigure
```

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FqxViF09tS5neDPNTQBly%2Fimage.png?alt=media&#x26;token=784676ed-79d6-4581-97ca-9e1e1044839b" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="メタデータファイルをダウンロード" %}

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FqgEy4oqNuldLosIGfgYE%2Fimage.png?alt=media&#x26;token=fbba42cd-6fc1-4935-ad5f-a8d88f7fb0e5" alt=""><figcaption></figcaption></figure>

まず、メタデータXMLファイルをKCMサーバーに転送しておいてください。

ローカルメタデータファイル (オプション1) を選択し、XMLファイルが配置されている正しいパスを入力してください。
{% endtab %}

{% tab title="メタデータファイルへのURL" %}

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FlwOpyqjds2atzWcgH695%2Fimage.png?alt=media&#x26;token=3ea46e92-cddf-444c-b1ee-19d3166fe42b" alt=""><figcaption></figcaption></figure>

リモートメタデータファイル (オプション2) は、IdPのメタデータXMLファイルを指すURLを取得できる場合 (Azureから取得できます) に最も簡単です。
{% endtab %}
{% endtabs %}

### IdPメタデータの取得

IDプロバイダの設定とXMLメタデータの取得方法については、以下のページをご参照ください。SAML 2.0に対応した任意のIDプロバイダをご利用いただけます。

{% content-ref url="authenticating-users-with-saml/microsoft-azure" %}
[microsoft-azure](https://docs.keeper.io/jp/keeper-connection-manager/authentication/authenticating-users-with-saml/microsoft-azure)
{% endcontent-ref %}

{% content-ref url="authenticating-users-with-saml/okta" %}
[okta](https://docs.keeper.io/jp/keeper-connection-manager/authentication/authenticating-users-with-saml/okta)
{% endcontent-ref %}

{% content-ref url="authenticating-users-with-saml/google-workspace" %}
[google-workspace](https://docs.keeper.io/jp/keeper-connection-manager/authentication/authenticating-users-with-saml/google-workspace)
{% endcontent-ref %}

{% content-ref url="authenticating-users-with-saml/onelogin" %}
[onelogin](https://docs.keeper.io/jp/keeper-connection-manager/authentication/authenticating-users-with-saml/onelogin)
{% endcontent-ref %}

{% content-ref url="authenticating-users-with-saml/pingidentity" %}
[pingidentity](https://docs.keeper.io/jp/keeper-connection-manager/authentication/authenticating-users-with-saml/pingidentity)
{% endcontent-ref %}

### プロンプトを完了する

* SAML IdP URL を入力します。
* 署名付きリクエストについて尋ねられた場合、わからなければ「No」を選択します。
* 次に、SAMLエンティティID を入力し、グループ属性を入力します (これは IdP のグループ属性と一致している必要があります)。
* 次に、SAMLをデフォルトのログインプロセスに設定するかどうか尋ねられます。ログインページにSAMLログインのリンクをオプションとして表示させたい場合は「No」を選択してください。一方、SAML を唯一の認証方法にしたい場合は「Yes」を選択してください。
* ユーザーアカウントを自動的に作成するかどうか尋ねられたら、「Yes」を選択してください。「No」を選択した場合、各アカウントをKeeperコネクションマネージャー (KCM) 内で手動で作成する必要があります。

これでSSOの設定が完了しました。

***

### Docker Composeインストール方法

Docker Composeインストール方法を使用してKeeperコネクションマネージャー をインストールした場合、SAMLサポートは事前設定されていません。以下は、SAMLを有効化する際の手順です。

1. ローカルインスタンスでコンテナを停止します。

```
cd /path/to/docker-compose.yml
docker-compose stop
```

2. docker-composeファイルを編集します。

カスタムDockerメソッドを使用してSAMLサポートを追加するには、`docker-compose.yml`ファイルの修正が必要です。ルートユーザーとして`docker-compose.yml`ファイルを編集し、「guacamole」セクションを見つけてください。

metadata.xml ファイルをコンテナと共有するためのボリュームマウントを作成します。すでにこの目的のために共有ボリュームを設定している場合は、それを再利用できます。SAML用の環境変数が必要なセクションを追加します。具体的な設定内容については、以下のサンプルをご参照ください。

```
    guacamole:
        image: keeper/guacamole:2
        restart: unless-stopped
        environment:
            ACCEPT_EULA: "Y"
            GUACD_HOSTNAME: "guacd"
            MYSQL_HOSTNAME: "db"
            MYSQL_DATABASE: "guacamole_db"
            MYSQL_USERNAME: "guacamole_user"
            MYSQL_PASSWORD: "xxxxxxxx"
            SAML_CALLBACK_URL: "https://demo.lurey.com"
            SAML_IDP_METADATA_URL: "file:///etc/guacamole/metadata.xml"
            SAML_ENTITY_ID: "https://demo.lurey.com"
            SAML_GROUP_ATTRIBUTE: "http://schemas.microsoft.com/ws/2008/06/identity/claims/groups"
            ADDITIONAL_GUACAMOLE_PROPERTIES: "extension-priority: *, saml"
     volumes:
            - common-storage:/var/lib/guacamole
            - "/etc/kcm-setup/metadata.xml:/etc/guacamole/metadata.xml:ro"
```

注:

* `/var/lib/guac_home` をローカルのボリュームパスに置き換えます。
* 「[https://demo.lurey.com](https://demo.lurey.com/)と記載されている2箇所を、KeeperコネクションマネージャーのログインURLに置き換えます。
* Azureを使用している場合にのみ、このSAMLグループ属性を使用します。その他のIDプロバイダを使用している場合は、異なるグループ属性IDを使用します。
* すべてのユーザーをSAMLログインに限定する場合は、`ADDITIONAL_GUACAMOLE_PROPERTIES` 行を削除してください。この行が存在する場合、ユーザーはパスワードまたはSAMLログインの選択できるようになります。

3. ローカルフォルダボリュームが存在しない場合は作成します。
4. metadata.xmlファイルをローカルコンピュータからdocker-composeファイルのguacamoleセクションのボリュームマウントが参照されている箇所へコピーします。
5. コンテナを再起動します。

```
sudo su
docker-compose up -d
```

ここれで設定が完了しました。

### 完了

SAMLモジュールを有効化すると、アプリケーションのログイン画面に以下のように新しいSAMLサインイン用のリンクが表示されます。

<figure><img src="https://4041518992-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ7s6LQJaKa1G17O787JG%2Fuploads%2FnqPfQLvaYDcbD8UKKSaf%2Fimage.png?alt=media&#x26;token=995f2a6b-40f2-4ba1-8dad-29c2e83b5150" alt=""><figcaption><p>SAMLリンクからサインイン</p></figcaption></figure>
