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でSSOに入門する
Search
Hiroyuki Wada
February 09, 2022
Technology
0
1.1k
KeycloakでSSOに入門する
2022/02/09(水)に開催された「OSSセキュリティ技術の会 第10回勉強会」の資料です。
https://secureoss-sig.connpass.com/event/235671/
Hiroyuki Wada
February 09, 2022
Tweet
Share
More Decks by Hiroyuki Wada
See All by Hiroyuki Wada
Identiverse 2024 Overview
wadahiro
0
97
実践 KeycloakとAdvancedな機能の紹介
wadahiro
2
1.9k
Other Decks in Technology
See All in Technology
What's the recommended Flutter architecture
aakira
3
2k
重厚長大企業で、顧客価値をスケールさせるためのプロダクトづくりとプロダクト開発チームづくりの裏側 / Developers X Summit 2025
mongolyy
0
140
技術広報のOKRで生み出す 開発組織への価値 〜 カンファレンス協賛を通して育む学びの文化 〜 / Creating Value for Development Organisations Through Technical Communications OKRs — Nurturing a Culture of Learning Through Conference Sponsorship —
pauli
5
390
Flutterで実装する実践的な攻撃対策とセキュリティ向上
fujikinaga
2
450
「データ無い! 腹立つ! 推論する!」から 「データ無い! 腹立つ! データを作る」へ チームでデータを作り、育てられるようにするまで / How can we create, use, and maintain data ourselves?
moznion
8
4.4k
AIを前提に、業務を”再構築”せよ IVRyの9ヶ月にわたる挑戦と未来の働き方 (BTCONJP2025)
yueda256
1
770
生成AI時代に若手エンジニアが最初に覚えるべき内容と、その学習法
starfish719
2
450
re:Invent2025 事前勉強会 歴史と愉しみ方10分LT編
toshi_atsumi
0
150
身近なCSVを活用する!AWSのデータ分析基盤アーキテクチャ
koosun
0
1.7k
改竄して学ぶコンテナサプライチェーンセキュリティ ~コンテナイメージの完全性を目指して~/tampering-container-supplychain-security
mochizuki875
1
320
ABEJA FIRST GUIDE for Software Engineers
abeja
0
3.2k
個人から巡るAI疲れと組織としてできること - AI疲れをふっとばせ。エンジニアのAI疲れ治療法 ショートセッション -
kikuchikakeru
4
1.4k
Featured
See All Featured
Done Done
chrislema
186
16k
KATA
mclloyd
PRO
32
15k
The Invisible Side of Design
smashingmag
302
51k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
11
930
The Cult of Friendly URLs
andyhume
79
6.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Designing for humans not robots
tammielis
254
26k
Into the Great Unknown - MozCon
thekraken
40
2.2k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
670
[RailsConf 2023] Rails as a piece of cake
palkan
57
6.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Transcript
KeycloakでSSOに入門する OSSセキュリティ技術の会 第10回勉強会 我が…Keycloakの世界に…入門してくるとは!の巻 Hiroyuki Wada / @wadahiro Wataru Okuura
自己紹介 奥浦担当 和田担当 和田担当
今日話すこと 入門編のこのあたりを中 心に解説 書籍のサンプルアプリ ケーションを使い実際に SSOの動作デモ
SSOとは 一度のログインで複数のアプリケーションやサービスに対してアクセス可能になる 特性や機能のこと
SSOのメリット • 利用者側 ◦ 1つのユーザIDとパスワードの組を覚えるだけで済む ◦ 一度ログインするだけで複数のアプリケーションを利用可能になり、 アプリケーションごとにログインする手間がなくなる
SSOのメリット • 管理者側 ◦ パスワードの管理箇所、認証箇所を1箇所に集約でき、アタックサー フェス(攻撃対象領域)を少なくできる ◦ 認証強度を上げる場合は、1箇所の認証強度を上げるだけで済む ◦ アプリごとにパスワード忘れ対応といったヘルプデスク運用の負荷軽
減
SSOは新しいものではない • Active Directoryドメイン内の認証などで使われるKerberosはかなり昔 からある • KeycloakではWebに特化したSSOを実現
(Web) SSOの実現方法 シンプルなCookieベースのやり方/オレオレSSO(2000年代)
異なるドメイン間でのSSO 認証連携の標準プロトコル(SAML/OIDC)を活用したSSO
SSOの仕組み
何らかの方法で 認証結果をアプリケー ションに連携することで SSOを実現 安全な方法で認証結果をアプ リケーションに渡す標準的なや り方を定めたもの ⇓ 認証連携プロトコル (SAML/OIDC)
認証完了 認証結果 を連携 認証結果 を連携
SAMLの代表的なフロー(HTTP POST Binding) • アプリケーション(SP:Service Provider) と認証サーバー(IdP:Idenitity Provider) 間は直接通信しない •
ブラウザー経由で認証結果を直接連携する • 認証結果として「SAMLアサーション」をIdPから SPに渡す • SPではSAMLアサーションを検証しつつ、含まれて いるユーザ識別子を利用してユーザを特定して SSOを行う
OIDCの代表的なフロー(認可コードフロー) • アプリケーション(RP:Relying Party)と認証サーバー(OP:OpenID Provider)間は直接通信あり • ブラウザーを経由せず、サーバー間通 信で認証結果を受け取る(引き換えの ための認可コードをブラウザー経由で 渡す)
• 認証結果として「IDトークン」をOPか らRPに渡す • RPではIDトークンを検証しつつ、含ま れているユーザ識別子を利用してユー ザを特定してSSOを行う
SAMLとOIDC • 認証リクエスト:SAMLリクエスト / OIDC認証リクエスト • 認証結果:SAMLアサーション / IDトークン •
アプリケーション-認証サーバー間の直接通信あり・なしは、実は SAML・OIDCの双方で方式が用意されている • ただし、紹介した代表的なフローがよく使われる (OIDCだと、アクセストークンを使ったAPI認可も同時に行いたいとなる と、認可コードフローがセキュリティ上望ましい)
Keycloak • SAML/OIDCの両方に対応した認証サーバー (代表的ではないフローにも対応) • Keycloak - アプリケーション間のSSOだけでなく、外部の認証サーバー とのSSO※についてもSAML/OIDCの両方に対応 ※Keycloakでは「アイデンティティーブローカリング」という機能
アプリケーションの SSO対応
アプリケーション側はどうする? • 認証サーバー側:Keycloakにおまかせ! • アプリケーション側:???
Keycloak入門本での解説 • 代表的なアプリケーション側のSSOの実現方式につ いて解説 • アプリケーションのタイプ別に、どの方式で実現 することができるか解説
ライブラリーを利用 • アプリケーション内でOIDC/SAML対応のラ イブラリーを利用して実現する • ライブラリーがOIDC/SAMLで必要なメッ セージの組み立て、アサーションの検証など を実施 • ライブラリーを組み込み可能なアプリケー
ションタイプの場合に利用可能なパターン
リバースプロキシーを利用 • リバースプロキシーサーバーにて OIDC/SAMLによるSSOを実装 • 後段のアプリケーションには、連携された 認証結果からユーザー識別子などをHTTP ヘッダーで連携する • アプリケーションはHTTPヘッダーを参照し
て認証するだけでよい • AWS Application Load Balancerや Identity-Aware Proxy(IAP)のOIDC 機能もこのパターンとなる
まとめ • SSOは認証結果を連携することで実現する • 認証結果を連携するための標準プロトコルとして、SAML/OIDCがある • KeycloakはSAML/OIDCを実装しており、認証サーバー側の機能を主に 提供(アプリケーション向けのライブラリも一部提供) • SSOを行うアプリケーション側もSAML/OIDCに対応する必要があるが、
様々な方式があり、アプリケーションタイプに応じて考える必要がある