Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
92
KeycloakでSSOに入門する
wadahiro
0
1.1k
Other Decks in Technology
See All in Technology
クマ×共生 HACKATHON - 熊対策を『特別な行動」から「生活の一部」に -
pharaohkj
0
250
マルチモーダル基盤モデルに基づく動画と音の解析技術
lycorptech_jp
PRO
2
280
隙間時間で爆速開発! Claude Code × Vibe Coding で作るマニュアル自動生成サービス
akitomonam
2
220
LLMでAI-OCR、実際どうなの? / llm_ai_ocr_layerx_bet_ai_day_lt
sbrf248
0
340
AI エンジニアの立場からみた、AI コーディング時代の開発の品質向上の取り組みと妄想
soh9834
8
610
AI工学特論: MLOps・継続的評価
asei
10
2.1k
地域コミュニティへの「感謝」と「恩返し」 / 20250726jawsug-tochigi
kasacchiful
0
110
Tiptapで実現する堅牢で柔軟なエディター開発
kirik
1
180
AIに全任せしないコーディングとマネジメント思考
kikuchikakeru
0
290
Step Functions First - サーバーレスアーキテクチャの新しいパラダイム
taikis
1
280
Unson OS|48時間で「売れるか」を判定する AI 市場検証プラットフォーム
unson
0
120
Perlアプリケーションで トレースを実装するまでの 工夫と苦労話
masayoshi
0
150
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Typedesign – Prime Four
hannesfritz
42
2.7k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Done Done
chrislema
185
16k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Statistics for Hackers
jakevdp
799
220k
Designing for humans not robots
tammielis
253
25k
Optimizing for Happiness
mojombo
379
70k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
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 まとめ