Location via proxy:
[ UP ]
[Report a bug]
[Manage cookies]
No cookies
No scripts
No ads
No referrer
Show this form
Submit Search
Submit Search
Upload
Keycloak開発入門
•
5 likes
•
2,488 views
Y
Yuichi Nakamura
Follow
2018/7/13 OSSセキュリティ技術の会第三回勉強会資料
Read less
Read more
Report
Share
Related slideshows
Kongの概要と導入事例
Kongの概要と導入事例
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
Keycloak & midPoint の紹介
Keycloak & midPoint の紹介
Report
Share
1 of 28
Download now
Download to read offline
More Related Content
Keycloak開発入門
1.
© Hitachi, Ltd.
2018. All rights reserved. Keycloakパッチ開発事例紹介 株式会社 日立製作所 茂木 昂士 2018/07/13
2.
© Hitachi, Ltd.
2018. All rights reserved. 1. 何を実装したか 2. 開発の準備 3. 実装 Contents 1 4. コードレビュー 5. まとめ
3.
© Hitachi, Ltd.
2018. All rights reserved. 1. 何を実装したか? 2
4.
© Hitachi, Ltd.
2018. All rights reserved. Contributeしたきっかけ 3 • 認証の画面も含めて独自のものにしたかった – ロジックが入るため、Theme機能では足りない – OpenID Connectで規定されていない独自パラメータも利用したい • Keycloakをカスタマイズして対応 – SPIという仕組みがありカスタマイズは可能 – Identity BrokerのSPIを利用して要求を実現 • カスタマイズしたもののアップデートが必要 – コミュニティに管理してもらおう!
5.
© Hitachi, Ltd.
2018. All rights reserved. Identity Brokering 4 • 認証を外部のIdPに委譲する機能 – 認証して得られた結果(ID Token)をKeycloakのユーザとして扱う • 追加した機能 – 認証時に独自のパラメータが転送されるようにした 外部IdPに認証してもらう 認証済みユーザ情報を Keycloakのユーザとして扱う Keycloakで認証 Keycloakでユーザ管理
6.
© Hitachi, Ltd.
2018. All rights reserved. Flow 5 クライアントから送信された パラメータが転送されない
7.
© Hitachi, Ltd.
2018. All rights reserved. 2. 開発の準備 6
8.
© Hitachi, Ltd.
2018. All rights reserved. 前準備 7 • 詳細は「Hacking on Keycloak」を • 下記のコミュニケーションツールがある – GitHub – JIRA (JBoss Developer) – メーリングリスト • JIRAでチケット作成 -> 新規 Pull Request
9.
© Hitachi, Ltd.
2018. All rights reserved. ソース取得・ビルド 8 • ForkしてClone – git clone https://github.com/<your_name>/keycloak • Mavenでビルド – mvn install –DskipTests=true – cd distribution – mvn install • distribution/targets以下に出力される • テストはよく失敗するのでとりあえず飛ばす – ごめんなさい…
10.
© Hitachi, Ltd.
2018. All rights reserved. IDE(Eclipse)での開発 9 • Mavenプロジェクトをインポート – Test, Example含め300以上のプロジェクトがある – 最初のインポートは時間がかかる – プロジェクトは階層表示を推奨 • Code FormatはWildflyのものを利用 – https://developer.jboss.org/wiki/ImportFormattingRules – すべてのコードに適用されているかは…
11.
© Hitachi, Ltd.
2018. All rights reserved. IDEでのデバッグ 10 • 公式には下記コマンドでサーバを起動している – mvn -f testsuite/utils/pom.xml exec:java -Pkeycloak-server (From README.md) • せっかくなのでIDEでデバッグ – 上記pom.xmlを見ると、下記のクラスを実行している – Project: keycloak-testsuite-utils – Main : org.keycloak.testsuite.KeycloakServer Break Pointなども使えるように!
12.
© Hitachi, Ltd.
2018. All rights reserved. 3. 実装 11
13.
© Hitachi, Ltd.
2018. All rights reserved. Walkthrough 12 • 関係するクラスを探っていく – 基本的な機能はkeycloak-servicesにある セッション作成 パラメータ保存 外部IdPへ保存した パラメータ転送 ブラウザ Keycloak 外部IdP
14.
© Hitachi, Ltd.
2018. All rights reserved. AuthorizationEndpoint 13 • Keycloakログイン画面の表示 – QueryParameterのパース、チェックなど – Sessionの作成、保存 • AuthorizationSessionというInfinispanモデルを作成 • QueryParameterなどもこれに保管されている • 独自パラメータもすでに保管されている – ClientNotesというMapにパラメータが入っている – Standardなパラメータと区別するためPrefixつき
15.
© Hitachi, Ltd.
2018. All rights reserved. IdentityBrokerService 14 • 登録されているIdPを選択、Provider実行 – “/{provider_id}/login”というパス定義 – 外部IdPへのリダイレクトをキック ここのリンク先になる
16.
© Hitachi, Ltd.
2018. All rights reserved. OidcIdentityProvider 15 • SPI(keycloak-spi-private)を実装している – Provider, ProviderFactory, ProviderConfigの組み合わせ • 今回はAbstractOauth2IdentityProviderを変更 – OidcIdentityProviderの親クラス – createAuthorizationUrlメソッドでRedirect先を生成
17.
© Hitachi, Ltd.
2018. All rights reserved. 設定項目の追加(1/2) 16 • 設定項目の追加が必要 – 特定のパラメータだけ転送するようにするため – 設定項目保存のための修正が必要 • Identity Brokeringの設定項目はDBに入っている DBスキーマの変更面倒そうだなぁ…
18.
© Hitachi, Ltd.
2018. All rights reserved. 設定項目の追加(2/2) 17 MariaDB [rhsso]> select * from IDENTITY_PROVIDER_CONFIG; +--------------------------------------+----------------------------------+----------------------+ | IDENTITY_PROVIDER_ID | VALUE | NAME | +--------------------------------------+----------------------------------+----------------------+ | edcd71e3-2210-401c-afb8-d36f479e8493 | http://keycloak.../auth | authorizationUrl | | edcd71e3-2210-401c-afb8-d36f479e8493 | | backchannelSupported | | edcd71e3-2210-401c-afb8-d36f479e8493 | keycloak | clientId | | edcd71e3-2210-401c-afb8-d36f479e8493 | 0882f656 | clientSecret | | edcd71e3-2210-401c-afb8-d36f479e8493 | | disableUserInfo | | edcd71e3-2210-401c-afb8-d36f479e8493 | | hideOnLoginPage | | edcd71e3-2210-401c-afb8-d36f479e8493 | http://keycloak... | issuer | | edcd71e3-2210-401c-afb8-d36f479e8493 | http://keycloak.../certs | jwksUrl | | edcd71e3-2210-401c-afb8-d36f479e8493 | | loginHint | | edcd71e3-2210-401c-afb8-d36f479e8493 | http://keycloak.../logout | logoutUrl | | edcd71e3-2210-401c-afb8-d36f479e8493 | http://keycloak.../token | tokenUrl | | edcd71e3-2210-401c-afb8-d36f479e8493 | true | useJwksUrl | | edcd71e3-2210-401c-afb8-d36f479e8493 | http://keycloak.../userinfo | userInfoUrl | | edcd71e3-2210-401c-afb8-d36f479e8493 | true | validateSignature | +--------------------------------------+----------------------------------+----------------------+ 14 rows in set (0.00 sec) • 設定項目はKey-Valueペアで保存されていた – よく変更されるので合理的 必要な場合は keycloak-model-jpaというプロジェクトにまとまっている
19.
© Hitachi, Ltd.
2018. All rights reserved. GUIの変更 18 • keycloak-theme – AngularJS(1.6.x)で作られている – Formの追加だけでOKだった – ラベル等はangular-translate • keyclaok-previewというフォルダがあった – Angular 5.x で作り直しているみたい – レスポンシブ対応などのPull Requestを目にしている
20.
© Hitachi, Ltd.
2018. All rights reserved. テストコード(Integration) 19 • Arquillianというフレームワークを使っている – JavaEEアプリケーションのテストを自動化してくれる • テストの実行 – ブラウザを使うテストも実行可能(Selenium, PhantomJS etc.) – mvn -f testsuite/integration-arquillian/tests/base/pom.xml test – 正規表現等で実行するテストを指定できる • -Dtest=“org.keycloak.testsuite.broker.Kc*” など – 詳細は HOW-TO-RUN.md に
21.
© Hitachi, Ltd.
2018. All rights reserved. Identity Brokeringのテスト 20 • 外部IdPとの連携テストをどうやるか? – KeycloakのRealmを2つ用意してやる – ProviderとConsumerの設定をKeycloakに設定 • org.keycloak.testsuite.broker.KcOidcBrokerConfiguration • パラメータの転送テスト – すでにあるテスト(arc_values, promptの指定)を参考に記載 – あまり理解しないでも書けてしまった…
22.
© Hitachi, Ltd.
2018. All rights reserved. 4. コードレビュー 21
23.
© Hitachi, Ltd.
2018. All rights reserved. GithubへPush 22 • コードをPushすると、TravisCIでテストが実行される – 全テストが終わるのに20分くらいかかる – すべてパスすれば、レビューしてもらえる • Unit Testはあまり必要ない – 「IntegrationとUnitで内容が重複するとメンテコストが上がる」 – Integration Testがしっかりしているので問題ない • 最後にコミットをまとめる – 1Pull Request に 1commitというポリシー – git rebase -i, git push –f
24.
© Hitachi, Ltd.
2018. All rights reserved. 5. まとめ 23
25.
© Hitachi, Ltd.
2018. All rights reserved. まとめ 24 • やりたいことを正しく伝える – 理解してもらえないと的外れな指摘 – 「よしなに」はやってくれない – Test Caseも伝えるための手段 • Time Zoneの違い – 日本と時差のある国(ex: ヨーロッパ諸国) – こっちの17時過ぎくらいから仕事が始まる
26.
© Hitachi, Ltd.
2018. All rights reserved. 株式会社 日立製作所 Keycloakパッチ投稿事例紹介 2018/07/13 茂木 昂士 END 25
27.
© Hitachi, Ltd.
2018. All rights reserved. 他社所有商標に関する表示 26 • Hitachiは株式会社 日立製作所の商標または登録商標です • JBoss は米国 RedHat Inc ならびにその子会社の登録商標です。 • その他記載の会社名、製品名などは、それぞれの会社の商標もしくは登録商標です
Download now