以下の手順は現在使用できません (2024/06/19)
## Step1: Keycloak を起動し、管理画面にアクセス
1. terminal で [Docker image](https://hub.docker.com/r/jboss/keycloak/) を pull
```
$ docker pull jboss/keycloak
```
2. Docker container を立ち上げる

```
$ docker run -d -p 18080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin --name keycloak jboss/keycloak
```
3. http://localhost:18080/auth/admin/ にアクセスし、管理者でログイン
    - Username: `admin`
    - Password:  `admin`


## Step2: Keycloak設定
### 2-1 GROWI用の Relm を作成する
1. 初期設定はMaster になっているので、 サイドバーから 「Add realm」 を押す

![Screen Shot 2022-09-22 at 14.57.43.png](/attachment/632bf9a44a0e56cdd8c25b08)

- Name: growi-dev
- Enabled: ON

で Createボタンを押す


### 2-2 クライアント作成
#### Details
1. サイドバーで Clients を選択
2. table の右端のCreate ボタンを押下
    - Client ID: `growi-client` (任意)
    - Client Protocol: `saml`
    - Client SAML Endpoint: `http://localhost:3000/passport/saml/callback` 
        - ↑Growiの認証機構設定で自動で記述されているコールバックURLをコピーすれば手に入る
3. save ボタンを押す


### 2-3 クライアント設定
- Client ID : `growi-client` (任意)
- Enabled : ON (デフォルト)
- Include AuthnStatement : ON
- Sign Documents : ON
- Sign Assertions : ON
- Signature Algorithm : `RSA_SHA1`
- SAML Signature Key Name : `KEY_ID`
- Canonicalization Method : `EXCLUSIVE`
- Client Signature Required: OFF
- Force POST Binding : ON
- Front Channel Logout : ON
- `Name ID Format` : `username`
- Root URL : `http://localhost:3000/`
- Valid Redirect URIs : `http://localhost:3000/*`
- Master SAML Processing URL: `http://localhost:3000/passport/saml/callback`


##### Fine Grain SAML Endpoint Configuration
- Assertion Consumer Service POST Binding URL: `http://localhost:3000/`
- Assertion Consumer Service Redirect Binding UR: `http://localhost:3000/passport/saml/callback`
- Logout Service Redirect Binding URL: `http://localhost:3000/passport/saml/callback`

以下を参照
![Keycloak Admin Console.png](/attachment/632bfdc54a0e56cdd8c26a70)

save を押す


### 2-4 クライアントマッパー設定
1. テーブル右端の Create ボタンを押下し以下を追加  


===========================================================================  
`※以下4つのMapperは、「Property」　「Friendly Name」　「SAML Attribute Name」はそれぞれ自身の「Name」と同じ値にする。（例: lastname は 3項目とも lastname とする）。「Mapper Type」は全て User Property に設定する。 `
1. lastname
2. id
3. firstname
4. email

===========================================================================  

5. mapper-username  
    - Mapper Type: `User Property`
    - Property: `username`
        - Keycloak で管理する user DB の user property
    - Friendly Name: `User's name`
        - 適当、わかりやすいものに設定
    - SAML Attribute Name: `uid`
        - GROWI とkeycloak をつなげる用の attribute
                
        
![Screen Shot 2022-09-22 at 21.05.59.png](/attachment/632c4fb04a0e56cdd8c36167)



### 2-5 ユーザーの作成
1. サイドバーのManage> Users を選択
    - 「View all users」 で全てのユーザーを見れます
2. 右端の「Add user」をクリック
3. 追加したいユーザーの情報を入力
    - Username: `keycloak-user1` (必須)
    - Email: `keycloak-user1@example.com` (必須)
        - email が入力されてないと、GROWI上で新規登録(ログイン)しようとしたときに Invalid User err が表示されるので入力必須
    - User Enabled: ON (default ON)
4. save ボタンを押す
5. Credentials のタブをクリック
6. Passwordを設定する
    - 例) `keycloak-user1keycloak-user1`
    - Temporary は off
        - ユーザーがログイン後にパスワードを変更する必要があるかどうかの設定


## Step3: GROWIでSAML設定
1. http://localhost:3000/admin/security にアクセス
2. SAML を有効にする をON


### Basic Settings
- エントリーポイント: `http://localhost:18080/auth/realms/growi-dev/protocol/saml`
    1. 添付画像の赤線のリンクをクリックして　`http://localhost:18080/auth/realms/growi-dev/protocol/saml/descriptor` にアクセス
    1. `SingleSignOnService` の `Location` に書かれているURLを記述すれば良い

![Screen Shot 2022-11-10 at 18.35.24.png](/attachment/636cc600cb10b3908b6e1608)

- 発行者: `growi-client`
- 証明書(Keycloak certificate):
    1. Keycloak の管理画面にアクセス
    2. Realm Settings の Keysタブをクリック
    3. Algorithm RS256 の Certificate を copy & paste する

### Attribute Mapping
- ID: `id`
- username: `uid`
- メールアドレス: `email`  
を入力する

### Attribute Mapping Options
必要であればチェックつけてください

### Attribute-based Login Control
必要であればカスタマイズしてください



## Step4: GROWI で SAML ログイン
1. /login にアクセス
2. External Auth をクリック
3. saml のSign in をクリック
4. KEYCLOCK のログイン画面に遷移するので、2-5 で作成したユーザーのusername とpassword を入力し Sign in
    - Username: `keycloak-user1`
    - Password: `keycloak-user1keycloak-user1`
5. ログインできていることを確認する


以上です!  :cat: :tada: 


---

## Page Navigation

- Canonical URL: https://dev.growi.org/Tips/開発用のミドルウェア追加/SAMLサーバー/旧:%20開発用のSAMLサーバーセットアップ
- Permalink: https://dev.growi.org/632bf6fd4a0e56cdd8c249c0
- Parent: [SAMLサーバー](/66728d633e8aea45af9e3f4a.md)
- Children: 0 total
- Total descendants: 0
- Siblings: 0 total
- Last updated: 2025-01-28T06:38:00.038Z by yuki
- Full page listing (all children regardless of count): https://dev.growi.org/_api/v3/page-listing/children?id=632bf6fd4a0e56cdd8c249c0
