KeycloakとGitbucketの連携

  •  
 
ホス2018年6月1日 - 14:11 に投稿

概要

  • KeycloakとGitBucketの連携方法をまとめる。
  • Keycloakのアカウントを使ってGitBucketにログインできるようにする。

前提

  • Keycloakが構築済み
  • レルム作成済み (本稿ではレルム名を "demo"とします)
  • レルムに一般ユーザアカウント作成済み
  • GitBucketを構築済み
  • GitBucketにユーザアカウント作成済み
  • OpenID Connectを使って連携する

手順

1. keycloakの設定

新しいクライアントを作成する

  • Client ID
    • "gitbucket"
  • Client Protocol
    • "openid-connect"
  • Access Type
    • "confidential"
  • Valid Redirect URIs
    • 例)"https://gitbucket.example.co.jp/signin/oidc"

2. Gitbucketの設定

管理者権限を持つ(UserTypeがAdministratorの)アカウントでGitbucketにログインする
アカウントメニュー(画面右上のプロフィール写真が表示されている箇所)の「SystemAdministration」> 「SystemSettings」> 「Authentication」タブを開く
OpenID Connectを有効にして、以下のように入力

  • Issuer
    • 例)"http://keycloak-example.com:8080/auth/realms/demo"
  • Client ID
    • gitbucket
  • Client secret
    • ※「1. keycloakの設定」の手順で作成したクライアントのCledentialsタブに表示されるsecretの値
  • Expected signature algorithm
    • "RS256"

3. GitBucketの既存アカウントとKeycloakアカウントの紐づけ

先にKeycloakでアカウントを作成しておく


管理者権限を持つアカウントでgitbucketにログインする
アカウントメニューの「SystemAdministration」> 「Database viewer」 を開く

コンソールが表示されるので、そこで以下のようなSQL文を入力する

insert into ACCOUNT_FEDERATION(issuer, subject, user_name) values( '<issuer_url>', '<keycloack_id>', '<gitbucket_username>' )

このSQLの<>で囲まれた箇所は、以下の通り読み替えてください

  • <issuer_url>
    • Gitbucketの設定で設定したIssuerのURLを指定する
  • <keycloack_id>
    • KeycloakのアカウントのIDを指定する
      ※IDは、Keycloakの管理画面で、レルム > Users > View all usersボタン押下 の手順で表示されるIDのことです。usernameではありません
  • <gitbucket_user_name>
    • GitBucketのアカウントを指定する

TODO↓

たとえば、KeycloakのIDが「12345678-90abcdef1-2345-67890abcdef1」で、GitBucketのアカウントが「yamada」のアカウントを紐付ける場合は次のようになります

insert into ACCOUNT_FEDERATION(issuer, subject, user_name) values( 'http://keycloak-example.com:8080/auth/realms/demo', '12345678-90abcdef1-2345-67890abcdef1', 'yamada' )

 

 

Run query ボタンを押下する

4. 動作確認

  1. Gitbucketのログイン画面を開いて、「Sign in with OpenID Connect」ボタンを押下
  2. Keycloakのログイン画面でユーザ名とパスワードを入力
  3. Gitbucketのログイン後の画面が表示される

参考資料

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。