Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
実践 KeycloakとAdvancedな機能の紹介
Search
Hiroyuki Wada
October 14, 2022
Technology
2
1.9k
実践 KeycloakとAdvancedな機能の紹介
OSSセキュリティ技術の会 第11回勉強会での発表資料です。
Hiroyuki Wada
October 14, 2022
Tweet
Share
More Decks by Hiroyuki Wada
See All by Hiroyuki Wada
Identiverse 2024 Overview
wadahiro
0
100
KeycloakでSSOに入門する
wadahiro
0
1.1k
Other Decks in Technology
See All in Technology
AgentCore BrowserとClaude Codeスキルを活用した 『初手AI』を実現する業務自動化AIエージェント基盤
ruzia
7
1.6k
Amazon Quick Suite で始める手軽な AI エージェント
shimy
2
1.9k
AIエージェント開発と活用を加速するワークフロー自動生成への挑戦
shibuiwilliam
5
870
「もしもデータ基盤開発で『強くてニューゲーム』ができたなら今の僕はどんなデータ基盤を作っただろう」
aeonpeople
0
250
さくらのクラウド開発ふりかえり2025
kazeburo
2
1.2k
[Data & AI Summit '25 Fall] AIでデータ活用を進化させる!Google Cloudで作るデータ活用の未来
kirimaru
0
4k
まだ間に合う! Agentic AI on AWSの現在地をやさしく一挙おさらい
minorun365
17
2.8k
テストセンター受験、オンライン受験、どっちなんだい?
yama3133
0
170
LayerX QA Night#1
koyaman2
0
270
『君の名は』と聞く君の名は。 / Your name, you who asks for mine.
nttcom
1
120
業務の煩悩を祓うAI活用術108選 / AI 108 Usages
smartbank
9
13k
[2025-12-12]あの日僕が見た胡蝶の夢 〜人の夢は終わらねェ AIによるパフォーマンスチューニングのすゝめ〜
tosite
0
190
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
2
190
Chasing Engaging Ingredients in Design
codingconduct
0
85
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
Scaling GitHub
holman
464
140k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Faster Mobile Websites
deanohume
310
31k
Test your architecture with Archunit
thirion
1
2.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
350
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The untapped power of vector embeddings
frankvandijk
1
1.5k
エンジニアに許された特別な時間の終わり
watany
106
220k
Transcript
実践 KeycloakとAdvanced な機能の紹介 OSSセキュリティ技術の会 第11回勉強会 行こう、アクセス管理からIDガバナンス&管理へ…の巻 Hiroyuki Wada / @wadahiro
• NRI OpenStandiaでOSSのサポート、システム構築、技術コンサルティ ングなどに従事 • OSSの中でも、IAM系のプロダクトに軸足を置いて活動 (Keycloak、midPointなど) • OSSのコントリビューション活動、翻訳などのコミュニティ活動を実施 自己紹介
• 「実践 Keycloak」のみどころの1つである、「Webアプリケーションのセ キュリティー保護」について紹介 (書籍の6章の一部) • 書籍ではちらっとしか登場しないIDレス認証について紹介 今日の内容
Webアプリケーションの セキュリティー保護
• 内部アプリケーションと外部アプリケーション • Webアプリケーションのセキュリティー保護 • ネイティブアプリケーションとモバイルアプリケーションのセキュリティー保 護 • REST APIとサービスのセキュリティー保護
6章 さまざまなタイプのアプリケーションの セキュリティー保護 本日はここについて紹介
1. Webアプリケーションが従来型 or SPA? 2. SPAなら、呼び出すREST APIが同一 or 外部ドメイン? 3.
外部ドメインのREST APIを呼ぶなら、仲介APIを経由 or 直接通信? どのアーキテクチャに合致するかを判断する 1. サーバーサイドWebアプリケーション 2. 専用REST APIを使用するSPA 3. 仲介REST APIを使用するSPA 4. 外部REST APIを使用するSPA Webアプリケーションのアーキテクチャを考慮してセ キュリティー保護のアプローチを決定する
• PKCEを用いた認可コードフローを利用する (リソースオーナーパスワードクレデンシャルズグラントは使わない) • Keyclaokのログイン画面を利用し、リダイレクトを利用する (iframeとして埋め込まない) すべてのアーキテクチャに共通する点
1. サーバーサイドWebアプリケーション • ベーシックなパターン • Webアプリケーションはコンフィデン シャルクライアントとなる • OIDCではなくSAMLを使用することも 可能
• OIDCであれば、アクセストークンを 利用してユーザーの認証コンテキス トでWebアプリケーションから外部の REST APIを呼び出すことも可能 出所: 実践 Keycloak ( https://www.oreilly.co.jp/books/9784814400096/ )
2. 専用REST APIを使用するSPAのセキュリティー保護 • SPAが同じドメイン上の専用のREST APIを使用するパターン • 専用REST APIはコンフィデンシャル クライアントとなる
• SPAと専用REST API間の呼び出しに はセッションCookieを利用 出所: 実践 Keycloak ( https://www.oreilly.co.jp/books/9784814400096/ )
3. 仲介REST APIを使用するSPAのセキュリティー保護 • SPAから外部(別ドメイン)のREST APIを、仲介REST APIを経由して呼 び出すパターン (いわゆる、BFFパターン) •
仲介REST APIはコンフィデンシャル クライアントとなる • SPAと仲介REST API間の呼び出しに はセッションCookieを利用 • 仲介REST APIと外部REST API間の 呼び出しにはアクセストークンを利 用 出所: 実践 Keycloak ( https://www.oreilly.co.jp/books/9784814400096/ )
4. 外部REST APIを使用するSPAのセキュリティー保護 • SPAから外部(別ドメイン)のREST APIを直接出すパターン • SPAはパブリッククライアントとなる • リフレッシュトークン/アクセストーク
ンがブラウザーに渡るため安全性が低 い • リフレッシュトークンローテーション などのテクニックで安全性を確保 出所: 実践 Keycloak ( https://www.oreilly.co.jp/books/9784814400096/ ) 書籍では12章で解説
• SPAからアクセストークンを直接使いREST API呼び出す方がアプリケーション 全体としてはシンプルになる (=保守コスト削減) ◦ 外部REST APIを呼び出すためだけの仲介サービスは不要 ◦ セッションCookieを使うことで気にしないといけない点を考えなくてよい
• 一方で、トークン漏洩によるセキュリティーリスクはある ◦ トークン格納先論争 (In-Memory vs Local/SessionStroage vs WebWorker) があるが、いずれにせよXSSに対しては漏洩の危険性がある • 結局のところ、どれを採用するかはセキュリティーと利便性やコストとのトレード オフを考慮した上で、決定する必要あり どのアプローチにするか FAPI 1.0 Part2 だと パブリッククライアントは禁止
IDレス認証
• WebAuthnのセキュリティーキー/認証器にユーザ情報も合わせて保存 することで、ログインIDの入力も省いた認証を可能に ※WebAuthnでは元々Resident Keyという名前だったが Discoverable Credentialという名前に変更されている • Keycloak v18.0.0から利用可能
• 公式ガイド内では「Loginless」と表現されているので注意 • 今後は「Passkey」という名前で広がりそう IDレス認証とは
「WebAuthn Passwordless Policy」にて 以下を設定 • Require Resident Key: Yes •
User Verification Requirement: required
認証フローを設定 • 「WebAuthn Passwordless Authenticator」を追加する ※Cookie AuthenticatorはSSOしたい場合は必要
デモ デモ
• 通常のログインIDを利用した認証との両立はどうする? 気になるところ ログインID/パスワードを入力できない ...
WebAuthnで認証 OR パスワードで認証 を定義 1. 認証フローで工夫 ログインID/パスワード認証のAuthenticatorをORで追加
ログイン完了 ログインID/パスワード認証画面の方 が優先されて初期表示される 辿り着くまで面倒... モーダルで選択
ログイン完了 2. カスタムAuthenticatorで対応 セキュリティキーになれていない ユーザには分かりにくい?
ログイン完了 3. カスタムAuthenticatorでConditional UI対応 ※Conditional UIについては、一昨日に開催された「 #idcon vol.29」 の発表を見るとよいです https://idcon.connpass.com/event/258685/
iOS16の場合 Chrome 107 (featureフラグ ON) の場合
デモ デモ
• 「実践 Keycloak」のみどころの1つとして、6章より「Webアプリケーション のセキュリティー保護」を紹介 ◦ OIDC/OAuth2のよくある解説では余り触れられていない、 Webアプリケーションの アーキテクチャを考慮した方式について紹介 ◦ 書籍では他にも、ネイティブ/モバイルアプリやREST
APIのセキュリティー保護につ いても説明しています • WebAuthnを利用した「IDレス認証」の方法、今後の普及 が期待されるConditional UIなどについてデモを交えて紹介 ※デモで利用したカスタム Authenticatorの実装例は以下のGitHubで公開しています https://github.com/wadahiro/keycloak-webauthn-conditional-ui まとめ