9
8

More than 5 years have passed since last update.

シングルサインオンサービスKeycloakとWikiシステムGrowiを連携する

Last updated at Posted at 2019-05-22

TL;DR

手順

  • Keyclock,Growi両方で設定が必要です
  • Keyclock:
    • Keycloak側でRealm(レルム,領域)を作成し,ユーザやグループを作ります
    • Keycloakで,Growi用のClientを作成し,Growiからのリクエストを受け付けます
  • Growi:
    • SAMLの設定を行い,Keycloakに接続します

Keycloakの設定

  • Administration Consoleで作業を行います

Realmの作成

  • まず,(複数の)Webサービスで利用する,Realmを作成します
  • 画面左上のドロップダウンリストから,"Add Realm"を選択します(最初は"Master"になっている)

    • 01_addRealm.jpg
  • Name: "dev"のような適当な名前を付けてCreateします

  • 画面左上の選択中のRealmが"dev"になっていることを確認してください

X.509証明書の取得

  • 以下のような,Realmを指定したURLにアクセスすると,Realmの情報を見ることができます
https://sso.example.com/auth/realms/dev/protocol/saml/descriptor
  • 後に使用するので,<dsig:X509Certificate>タグ内の,MII〜で始まる文字列をコピーしておきます

ユーザの作成

  • 画面左のメニューから,"Manage"カテゴリの"Users"をクリックします
    • 画面右に表示される"Add User"をクリックし,ユーザを作成します
    • Username, Email, First Name, Last Nameを入力し,"Save"します
    • メール設定をしていない場合は"Email Verified"をONにしておきます
    • 04_usersAdd.jpg
  • "Credentials"タブで,パスワードを設定します
    • "Temporary"をONにしておくと,初回ログイン時にパスワードの変更を求められます(不要であればOFFにします)

Growi用Clientの作成

  • Growiが接続されるClientを作ります
  • 画面左のメニューから"Clients"を選択します
  • "Lookup"タブから,"Create"ボタンをクリックします
    • 06_createClient.jpg
  • Client IDにサービス名を設定して"Save"します(今回の場合はgrowiにしました.)
    • 他の設定は後ほど変更します
  • 後述の説明にしたがって,各タブに設定をします
    • Settingsタブと,Mappersタブで設定を記述します

Settingsタブ

  • 表の通り設定します
    • 修正の必要がある項目と,ONにしている部分だけを抜粋しています
設定名 設定値
Client ID growi
Enabled ON
Client Protocol saml
Include AuthnStatement ON
Sign Documents ON
Sign Assertions ON
Signature Algorithm RSA_SHA1
SAML Signature Key Name KEY_ID
Canonicalization Method EXCLUSIVE
Force POST Binding ON
Front Channel Logout ON
Force Name ID Format ON
NAME ID Format username
Root URL GrowiのURL(e.g. https://growi.example.com/)
Valid Redirect URIs GrowiのURL以下の領域 (e.g. https://growi.example.com/*
Master SAML Processing URL ログイン後のコールバックURL (e.g. https://growi.example.com/passport/saml/callback)
  • さらに,"Fine Grain SAML Endpoint Configuration"を展開して,以下の設定を行います
設定名 設定値
Assertion Consumer Service POST Binding URL GrowiのURL(e.g. https://growi.example.org/)
Assertion Consumer Service Redirect Binding URL ログイン後のコールバックURL (e.g. https://growi.example.com/passport/saml/callback)
Logout Service Redirect Binding URL ログイン後のコールバックURL (e.g. https://growi.example.com/passport/saml/callback)

Mappersタブ

  • Mappersタブで,Growiのユーザ情報として必要な情報と,keycloakで管理しているユーザ情報を紐付けます
  • "Create"ボタンをクリックして,以下の表の通り,マッピングするエントリを追加します
    • まず"Mapper Type"のドロップダウンリストからTypeを選択すると,入力が必要となるフォームが表示されます
Name Mapper Type Property Friendly Name SAML Attribute Name SAML Attribute NameFormat
username User Property username username username Basic
id User Property id id id Basic
email User Property email email email Basic
firstName UserProperty firstname firstname firstname Basic
lastName UserProperty lastname lastname lastname Basic
  • 以下のように設定されます
    • 全体
      • 08_mappers.jpg
    • 各エントリ

Growiの設定

  • 管理者権限を持つアカウントでログインして作業します
    • GrowiはGUIでKeycloak(SAML認証)との接続ができます
  • "管理"をクリックし,"セキュリティ設定"を選びます
  • "認証機構設定"で,"SAML"タブをクリックします
  • 以下の表の通り,SAML設定を行います
  • 必要な情報を入力後,"更新"をクリックして設定を保存します
設定名 設定値
SAML ON
コールバックURL ログイン後のコールバックURL (e.g. https://growi.example.com/passport/saml/callback)
エントリーポイント keycloakの当該Realmに対するSAMLエントリポイント (e.g. https://sso.example.com/auth/realms/dev/protocol/saml)
発行者 issuers.Clientで設定したClient ID (今回の場合はgrowi)
証明書 後述
ID id
ユーザー名 username
メールアドレス email
lastName
firstName
Attribute Mapping Options チェックしない

x.509証明書について

  • KeycloakのRealms設定のときに取得した,x.509証明書を,当該欄に記載します.
    • 12_growiCertificate.jpg
    • 文字列に,-----BEGIN CERTIFICATE----------END CERTIFICATE-----の行を先頭と末尾にそれぞれ追加します
-----BEGIN CERTIFICATE-----
MII〜
-----END CERTIFICATE-----

動作確認

  • いったんログアウトすると,Growiのログイン画面に移りますが,このとき,ログイン画面に"OAuth"という文字が表示されるようになります
  • マウスを近づけると,"ログイン" with SAMLというボタンが出現するので,クリックします
    • 14_growiLogin.jpg
  • Keycloakのログイン画面に遷移しますので,Realmで作成したユーザでログインします
  • Growiの画面に遷移し,作業を開始することができます

参考

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8