10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Keycloakを使って、GrowiのSAML認証を使ってみた

Last updated at Posted at 2018-11-03

SAMLを実装しようと思った目的・背景

  • インフラ勉強会 において、使われているWordpressとGrowi Wikiの認証を共通化して、Single Sign On(SSO)を実装しようと思ったため。
  • 実装までの変遷は下の方に記載しておきます。

検証した最終バージョン

  • Keycloak ver.4.0.0 Final (※構築済みとする)
  • Growi ver.3.2.4 (※構築済みとする)
  • Docker ver.18.03.1-ce
  • Docker-compose ver.1.21.2

設定項目

Growi

  1. Growiにおいて、Admin権限で管理を開きます。
  • アプリの設定
    • サイトURL: https://wiki.examle.com
      • ここは環境変数として、セキュリティ設定でも使われているので大事な設定です。
    image.png
  • セキュリティ設定
    • Passport 認証機構: 有効化
    • SAML: ON
  1. Growiにおいて、[更新]ボタンを押す
  2. Growiにおいて、コールバックURLをメモする。

    image.png

Keycloak

  1. Keycloakにおいて、Growi用のRelmを作成する。
    • Name: wiki (任意)
  2. Keycloakにおいて、Growi用のRelmを作成する。
    • 言語設定(日本語)をしたい方は、 Realm Settings --> Theme
      • Internationalization Enabled: ON
      • Default Locale: ja
  3. Keycloakにおいて、クライアントを追加する。
    • 右端にある[作成]ボタンから追加
      • クライアントID: wiki.examle.com
      • クライアントプロトコル: saml
      • クライアント SAML エンドポイント : https://wiki.examle.com/passport/saml/callback
        • GrowiのセクションでメモしたコールバックURL
  4. Keycloakにおいて、クライアントの設定をする。
    ※設定は最低限であるため、必要に応じてカスタマイズしてください。
    • 設定
      • 名前 : wiki(任意)
      • 有効 : オン (デフォルト)
      • AuthnStatement を含める : オン
      • ドキュメントを署名する : オン
      • アサーションを署名する : オン
      • 署名アルゴリズム : RSA_SHA1
      • SAML Signature Key Name : KEY_ID
      • 正規化方式 : EXCLUSIVE
      • POST Binding を強制 : オン
      • Name ID フォーマットを強制 : オン
      • Name ID フォーマット : username
      • ルート URL : https://wiki.example.com/
      • 有効なリダイレクト URI : https://wiki.example.com/*
    • SAML エンドポイントの詳細設定
image.png 8. Keycloakにおいて、クライアントマッパーの設定をする。 ※プロパティ,Friendly Name,SAML Attribute Nameは下記、同じ値。マッパータイプはUser Property。 - 右端にある[作成]ボタンから以下を追加 - lastname - id - firstname - email - username ![image.png](https://qiita-image-store.s3.amazonaws.com/0/291673/40be3a85-1fe3-4bbc-59f4-72427f3e86fb.png)

Growi


image.png

ログインテスト

  1. growi wiki のログインページにおいて、[OAuth]ボタンを下から上にマウスカーソルでなぞり、[ログイン with SAMLSAML]ボタンを押す。
image.png - keycloakに遷移されることを確認する。 - エラーが出る場合はトラブルシュートする。 - keycloakの認証ページにおいて、ログインをする - エラーが出る場合はトラブルシュートする。
image.png

署名アルゴリズムを強化したい向け

2018年10月末現在ハードコードするしかないです。※Github Issue #615が実装された際にはそちらで設定が可能な予定

  • Keycloak - クライアント - 設定
    • 署名アルゴリズム : RSA_SHA256
  • Growi
    • 場所:./src/server/service/passport.js:446
    • 値: signatureAlgorithm: 'sha256'

SAML認証トラブルシュートにおけるお役立ち情報

SAML認証実装までの変遷

  • 今年2018年6月ごろから検証を開始。
  • 今年2018年6月ごろにはGrowi WikiにはSAMLの機構がなかった。
  • Github Issueで上げました。今後のことを考え、英語でIssue #542を記述。
    • 2018年9月 SAML認証が実装されましたが、検証したところ、うまく動きませんでした。
    • 状況をGrowi Slackに報告し、不具合と認定されました。
    • 2018年10月初旬にSAML認証の不具合が改善され、かつSAML認証のX.509証明書の機能も実装されました。

special thanks

  • miya
  • inductor
  • yuki@weseek

※なお今後の予定としては、Azure ADでも認証ができるか遊んでみる予定です。

10
11
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
10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?