SlideShare une entreprise Scribd logo
1  sur  33
© Hitachi, Ltd. 2019. All rights reserved.
株式会社 日立製作所
中村 雄一
2019/06/07
Keycloakの紹介と最新開発動向
OSSセキュリティ技術の会第5回勉強会
© Hitachi, Ltd. 2019. All rights reserved.
1. Keycloakの概要
2. APIにおけるKeycloak
3. 開発動向
Contents
1
© Hitachi, Ltd. 2019. All rights reserved.
1. Keycloakの概要
2
© Hitachi, Ltd. 2019. All rights reserved.
Keycloakとは
3
Red Hatを中心とするコミュニティで開発される
ID情報を取り扱うOSSです。
LDAP
Active
Directory
RDB
主要標準に対応したID連携
(Identity Federation)
ソーシャルログイン
(Identity Brokering)
ID管理と認証
(Identity Management)
© Hitachi, Ltd. 2019. All rights reserved.
ユースケース1: シングルサインオン
Webアプリ
ユーザ認証
エージェント型
Webサイトアクセス
認証情報連携
OIDC/SAML
ライブラリ
Webアプリ
ユーザ認証
Webサイトアクセス
認証情報連携
Reverse Proxy
(Apache mod_openidc)
Webサイトアクセス
(ユーザ属性付)
Proxy型
Webアプリ側では、
ライブラリを使ってOpenID Connect/SAMLで
Keycloakと連携する処理を作り込む
Keycloakからは「クライアントアダプタ」を提供。
DBもしくは、LDAP・AD等と
連携して認証し認証結果を
Webアプリに送付
Webアプリ側での作り込み
は最小限
最近Keycloak用リバプロの
「Gatekeeper」がKeycloak
コミュニティよりリリース
© Hitachi, Ltd. 2019. All rights reserved.
ユースケース2: ソーシャルログイン
5
Webアプリ
ユーザ認証
エージェント型での例
Webサイトアクセス
認証情報連携
OIDC/SAML
ライブラリ
外部サイト
KeycloakがOpenID Connectを
利用して、外部サイトの
認証画面にフォワード
認証結果
Proxy型でも同様にソーシャルログインに対応可
© Hitachi, Ltd. 2019. All rights reserved.
2. APIにおけるKeycloakの役割
6
© Hitachi, Ltd. 2019. All rights reserved.
APIセキュリティの基本: 認証とアクセス制御
7
ユーザは誰?
⇒ユーザ認証
APIを使うアプリは誰?
⇒ クライアント認証
エンド
ユーザ
APIを利用する
アプリ
APIサーバ
誰が何をしていいの?
⇒アクセス制御
ブラウザやスマホ
でアプリ利用
REST APIコール
認証方式 対応する認証
APIキー クライアント認証
OAuth/OpenID Connect クライアント認証+ユーザ認証
クライアント認証単独
「認証」が大前提
Keycloak
© Hitachi, Ltd. 2019. All rights reserved.
APIキー認証
8
問題点:
・ 標準化されていない
・ エンドユーザを認証できない
近年のオープンAPIではOAuth/OpenID Connectが主流
->API分野でKeycloakが注目
© Hitachi, Ltd. 2019. All rights reserved.
OAuth2 と OpenID Connect
9
・ KeycloakはOAuth/OpenID Connect両方に対応した認可サーバ
アクセストークンを発行・管理
「アクセストークン」を発行してもらうためのプロトコル。「認可サーバ」が必要。
ユーザは誰?
⇒ユーザ認証
APIを使うアプリは誰?
⇒ クライアント認証
エンド
ユーザ
APIを利用する
アプリ
APIサーバ
誰が何をしていいの?
⇒アクセス制御
ブラウザやスマホ
でアプリ利用
REST APIコール
アクセストークン アクセストークンを
使って判断
認可
サーバ
・ OAuth2:
- 基本的なプロトコル。自由度が高すぎセキュリティホールを作り込みやすい欠点
・ OpenID Connect :
- OAuthの上に認証情報(IDトークン)連携を追加
- OAuthもハードニングされている
© Hitachi, Ltd. 2019. All rights reserved.
アクセストークンの例
10
{
"jti": "c26a32c4-4b48-4c2f-a7da-3b9b8ecad652",
"exp": 1535424101,
"nbf": 0,
"iat": 1535423801,
"iss": "http://localhost:8080/auth/realms/provider",
"aud": "broker",
"sub": "e4b11e2e-9136-409b-8720-57463c627c10",
"typ": "Bearer",
"azp": "broker",
"auth_time": 0,
"session_state": "ac1767e2-2e30-4d44-b6f3-b77935a7a0bc",
"acr": "1",
"allowed-origins": [],
"realm_access": {
"roles": [
"read",
"additional",
"write"
]
},
"name": "Takashi Mogi",
"preferred_username": "mogi",
"given_name": "Takashi",
"family_name": "Mogi",
"email": "mogi@example.com"
}
アクセストークンの中身は任意
(認可サーバのソフトウェアによって異なる)
Keycloakから発行されたアクセストークンの例:
Keycloakでは、
ロールやユーザ名のような属性情報が
アクセストークンに入っている
(Keycloak独自仕様)
APIサーバはこれらを見てアクセス制御できる。
© Hitachi, Ltd. 2019. All rights reserved. 11
エンドユーザ
APIサーバ
サードパーティー
アプリケーション
LDAP
DBMS
1. ログイン画面リダイレクト
6.アクセストークン
発行
(OpenID Connectの
場合は+IDトークン)
7.アクセストークン付き
APIアクセス
Keycloakサーバ
OAuth/OpenID Connectによるトークン発行フローの例
2. LDAPやDBと
連携してユーザ認証
3. 認可コード返却
4.トークンリクエスト
+クライアント秘密情報
API提供者側の認証情報を持たないため
OpenID Connectが急速に普及している。
5. クライアント
認証
API提供者Authorization Code Grant
© Hitachi, Ltd. 2019. All rights reserved.
Token Introspection
12
Token Introspectionにて聞きに行く
APIサーバ
サードパーティー
アプリケーション
トークン付きAPIアクセス
Keycloakサーバ
・ トークンが有効か無効かは、認可サーバが管理
認可サーバからプッシュ通知される仕掛けはなく、
認可サーバ側に聞きにいかないとわからない
・ トークンの有効性やメタデータを聞くためのI/FがRFC7662にて規定:
Token Introspection ⇒ Keycloakも対応
・ 万全を期する場合は、APIサーバが毎度アクセスがあるごとに聞きにいく
必要があることに注意。
© Hitachi, Ltd. 2019. All rights reserved.
アクセス制御処理
13
APIサーバ
サードパーティー
アプリケーション
1) トークン付きAPIアクセス
Keycloakサーバ
2) トークン正当性・有効性確認
(Token Introspection)
3) トークンデコード
署名確認
4)トークン中の属性を
見て
アクセス可否判断
5) APIの結果
アクセス制御処理
・ Keycloak自身はアクセス制御にはほとんど関与しない
・ APIサーバでアクセス制御を行う必要。
⇒ API数が増えると実装が煩雑な場合もある
リバプロ(APIゲートウェイ)を置くこともある
© Hitachi, Ltd. 2019. All rights reserved.
Keycloakの入手
14
Keycloakのダウンロードページから
ZIPファイルをダウンロード
© Hitachi, Ltd. 2019. All rights reserved.
Keycloakの起動
15
• bin/standalone.bat を実行
• Application Server(Wildfly)、お試し用のDBMS(H2DB)が
付属しているためそのまま動作する
© Hitachi, Ltd. 2019. All rights reserved.
情報源
16
・ 公式ドキュメントが充実していますので、まずはこちら
https://www.keycloak.org/documentation.html
・ 日本語もあります(NRIさん)
https://keycloak-documentation.openstandia.jp/
・ @ITさんKeycloak超入門
https://www.atmarkit.co.jp/ait/series/7363/
© Hitachi, Ltd. 2019. All rights reserved.
3. Keycloakの開発動向
17
© Hitachi, Ltd. 2019. All rights reserved.
Red Hat Summitで最新動向探ってきました
18
Red Hat Summit会場にて、
Keycloak主要メンバ(マネージャのMikeさん、主要開発者のMarekさん)と、
日本コミュニティの打ち合わせを開催
トピック:
• Financial API (FAPI)について(後述)
• WebAuthnについて(後述)
• ロードマップについて
Red Hat Summit(2019/5/7-9@Boston)
・ 日本コミュニティとのmeeting
・ セッション :
・ Keycloakに関連したセッションは一つだけ
「Security for Open Banking, PSD2, FAPI」
・ 他のOpenShiftやIntegrationミドルのセッションで部品として
触れられている形
© Hitachi, Ltd. 2019. All rights reserved.
FAPI対応について: FAPIとは
19
OAuth
OpenID
Connect
(OIDC)
「アクセストークン」をやり取りする認可の仕様。
自由度が高く、そのまま使うと
セキュリティホールを作り込んでしまう。
OAuthの使い方を縛り、かつ
「アクセストークン」の中に「ID情報」を
含めてやり取りできる仕様
⇒まだ自由度は高く、使い方によって
セキュリティレベルがバラバラ
OAuth/OIDCの安全な使い方を規定。
オプション仕様の使い方、下のレイヤ
(SSL/TLS)の使い方等。
APIの形式などは規定されていない。
FAPI
2019年4月にFAPIのCertificationがOpenID Foundationで開始。
Conformance Testも公開
・金融API公開にあたっての OAuth/OIDCの安全な使い方の規定。
OpenID Foundationで策定中。UKのOpenbankingで採用、世界中で採用広まりつつある
Part1(ReadOnly、照会系API向け), Part2(ReadWrite,更新系API向け)
が、現在Implementer’s draft。 最近CIBAプロファイルも出ました。
© Hitachi, Ltd. 2019. All rights reserved.
KeycloakのFAPIへの対応状況
20
JIRA Ticket 概要 Pull
Request
対応
バージョン
KEYCLOAK-2604 RFC 7636(PKCE)対応 3831 3.1.0
KEYCLOAK-5661 アクセストークンにスコープを返す 4527 3.4.0
KEYCLOAK-5811 Support client authentication in
client_secret_jwt
4835 4.0.0
KEYCLOAK-6700 Support s_hash 5022 4.0.0
KEYCLOAK-6771 Support Holder of Key mechanism
for Tokens ([mtls]対応)
5083 4.0.0
KEYCLOAK-6768 IDトークン暗号化 (optional) 5779 レビュー中
KEYCLOAK-6770 トークン類の ES256/384/512 署名 5533 4.5.0
KEYCLOAK-8460 リクエストオブジェクトの
ES256/384/512署名
5603 4.7.0
KEYCLOAK-9756 トークン&リクエストオブジェクトの
PS256/384/512署名対応
5974 6.0.0
机上検証し、必要な機能群を乗松さん中心に実装
CIBAはまだですが、
Part1,2は概ね実装できたと思っています。
© Hitachi, Ltd. 2019. All rights reserved.
FAPIのConformance Testパスに向けて
21
・ Keycloakコミュニティとしても、FAPIのテストをパスさせる予定。
⇒ 実態としては日本勢に期待されている。
コミュニティ打合せの結果、次の日の
セッション「Security for Open Banking, PSD2, FAPI」にて、
“We Partner with Hitachi for Open Conformance Testing for FAPI”
と記載
・ 「OSSセキュリティ技術の会」を通じて日本勢で取組中。
・ 課題解決に向けて下記技術の会Githubで議論中、適宜upstream。
https://github.com/jsoss-sig/keycloak-fapi/
© Hitachi, Ltd. 2019. All rights reserved.
WebAuthnについて
22
・ まずは、2FA対応予定
・ WebAuthnロジックそのものについては、Keycloak本体に
持つつもりは無く、外部ライブラリ活用の方針
・ ライブラリとしては、現在webauthn4jが有力候補。
認証プラグイン(authenticator)も合わせて開発・提案中。
https://github.com/webauthn4j/keycloak-webauthn-authenticator
・ 多要素認証全般についてアーキテクチャ見直しが進んでおり
githubで延々議論中。
https://github.com/keycloak/keycloak-community/pull/5
⇒ これらに伴いSPIが変更になる可能性があり、要注意。
© Hitachi, Ltd. 2019. All rights reserved.
WebAuthn authenticator開発状況
23
こちらにて開発中。使い方もあります
https://github.com/webauthn4j/keycloak-webauthn-authenticator
一通り動くものはでき、keycloak-devで議論しながらブラッシュアップ中。
OS ブラウザ 認証器 ユースケース
Windows10 Chrome
Firefox
Yubico security Key 2要素認証
Edge PC内蔵指紋認証器 2要素認証
指だけ認証
MacOS Mojave Chrome
Firefox
Yubico security Key 2要素認証
Android 8.1 Chrome 内蔵指紋認証器 確認中
下記で動作確認済(&中)
© Hitachi, Ltd. 2019. All rights reserved.
Keycloakにユーザプロファイル登録 (1)
24
ここのパスワード
入力は不要にする予定
© Hitachi, Ltd. 2019. All rights reserved. 25
Keycloakにユーザプロファイル登録 (2)
© Hitachi, Ltd. 2019. All rights reserved.
Keycloakにログイン (1)
26
© Hitachi, Ltd. 2019. All rights reserved.
Keycloakにログイン (2)
27
© Hitachi, Ltd. 2019. All rights reserved.
WebAuthn対応: 今後の予定
28
・ webauthn4j, authenticatorともに、Keycloakコミュニティ側には認知
(newsletterに掲載されたので)
・ keycloak-community repoにdesignドキュメント出して、本格的に入れ
込み開始予定
・ Keyconf19でも議論予定
© Hitachi, Ltd. 2019. All rights reserved.
ロードマップについて【非公開】
29
© Hitachi, Ltd. 2019. All rights reserved.
Keycloakコミュニティトピック
30
・ バージョニングポリシー
4半期に1回、メジャーバージョン番号が上がるようになった。
Continuous delivery modelのためらしいが。。
https://www.keycloak.org/2019/04/versioning.html
・ ブログの刷新
https://www.keycloak.org/blog.html
- 「Keycloak news letter」が月1ぐらい出るように。
- ゲスト記事も受け付けるようになった。Keycloak-users等で申し出ればいい模様。
・ keycloak-community リポジトリ
MLでは議論が収束しなそうな大き目のトピックについては、
https://github.com/keycloak/keycloak-community
にdesignドキュメントをPR出して進めることができるように
・ KeyConf19
Keycloakの初のカンファレンス。UKで6/12,13開催予定。
https://www.hartree.stfc.ac.uk/Pages/KeyConf.aspx
31© Hitachi, Ltd. 2019. All rights reserved.
他社所有商標に関する表示
• HITACHIは、株式会社 日立製作所の商標または登録商標です。
• Red Hatは米国およびその他の国におけるRed Hat, Inc.の登録商標です。
• GitHub は、GitHub Inc.の米国およびその他の国における商標または登録商標です。
• TwitterはTwitter Inc.の米国およびその他の国における商標または登録商標です。
• FacebookはFacebook Inc.の米国およびその他の国における商標または登録商標です。
• Kubernetesは米国およびその他の国におけるThe Linux Foundationの登録商標です。
• OpenShiftは米国およびその他の国におけるRed Hat, Inc.の登録商標です。
• その他記載の会社名、製品名などは、それぞれの会社の商標もしくは登録商標です。
Keycloakの紹介と最新開発動向

Contenu connexe

Tendances

MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリングMicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
LINE Corporation
 

Tendances (20)

KeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開するKeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
 
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
 
なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景
 
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護
 
2020 0218 - パスワードのいらない世界へ:FIDOアライアンスとFIDO認証の最新状況
2020 0218 - パスワードのいらない世界へ:FIDOアライアンスとFIDO認証の最新状況2020 0218 - パスワードのいらない世界へ:FIDOアライアンスとFIDO認証の最新状況
2020 0218 - パスワードのいらない世界へ:FIDOアライアンスとFIDO認証の最新状況
 
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
 
KeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについてKeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについて
 
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)
 
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
 
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawawsOAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
 
FIDO認証によるパスワードレスログイン実装入門
FIDO認証によるパスワードレスログイン実装入門FIDO認証によるパスワードレスログイン実装入門
FIDO認証によるパスワードレスログイン実装入門
 
認証の課題とID連携の実装 〜ハンズオン〜
認証の課題とID連携の実装 〜ハンズオン〜認証の課題とID連携の実装 〜ハンズオン〜
認証の課題とID連携の実装 〜ハンズオン〜
 
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリングMicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
 
FIDOのキホン
FIDOのキホンFIDOのキホン
FIDOのキホン
 
Keycloak入門-OpenID ConnectによるAPIセキュリティ
Keycloak入門-OpenID ConnectによるAPIセキュリティKeycloak入門-OpenID ConnectによるAPIセキュリティ
Keycloak入門-OpenID ConnectによるAPIセキュリティ
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 
ハイブリッド時代のID基盤構成の基礎
ハイブリッド時代のID基盤構成の基礎ハイブリッド時代のID基盤構成の基礎
ハイブリッド時代のID基盤構成の基礎
 
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送
 
分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要
 
ブロックチェーンを用いた自己主権型デジタルID管理
ブロックチェーンを用いた自己主権型デジタルID管理ブロックチェーンを用いた自己主権型デジタルID管理
ブロックチェーンを用いた自己主権型デジタルID管理
 

Similaire à Keycloakの紹介と最新開発動向

OpenID TechNight - Ping Identity 製品紹介
OpenID TechNight - Ping Identity 製品紹介OpenID TechNight - Ping Identity 製品紹介
OpenID TechNight - Ping Identity 製品紹介
Daisuke Fuke
 
いま、エンタープライズIdに求められるもの
いま、エンタープライズIdに求められるものいま、エンタープライズIdに求められるもの
いま、エンタープライズIdに求められるもの
Egawa Junichi
 

Similaire à Keycloakの紹介と最新開発動向 (20)

利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向
利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向
利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向
 
実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門
 
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説
 
OpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンスOpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンス
 
OpenID ConnectとSCIMのエンタープライズ利用ガイドライン
OpenID ConnectとSCIMのエンタープライズ利用ガイドラインOpenID ConnectとSCIMのエンタープライズ利用ガイドライン
OpenID ConnectとSCIMのエンタープライズ利用ガイドライン
 
Lf intro 2020-r5
Lf intro 2020-r5Lf intro 2020-r5
Lf intro 2020-r5
 
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
 
新しい認証技術FIDOの最新動向
新しい認証技術FIDOの最新動向新しい認証技術FIDOの最新動向
新しい認証技術FIDOの最新動向
 
Web3時代のデジタルアイデンティティ (高橋健太 |株式会社日立製作所 研究開発グループ)
Web3時代のデジタルアイデンティティ (高橋健太 |株式会社日立製作所 研究開発グループ)Web3時代のデジタルアイデンティティ (高橋健太 |株式会社日立製作所 研究開発グループ)
Web3時代のデジタルアイデンティティ (高橋健太 |株式会社日立製作所 研究開発グループ)
 
OpenID TechNight - Ping Identity 製品紹介
OpenID TechNight - Ping Identity 製品紹介OpenID TechNight - Ping Identity 製品紹介
OpenID TechNight - Ping Identity 製品紹介
 
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_insideAuthlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
 
Creating a World without Passwords -- A FIDO UAF Case Study
Creating a World without Passwords -- A FIDO UAF Case StudyCreating a World without Passwords -- A FIDO UAF Case Study
Creating a World without Passwords -- A FIDO UAF Case Study
 
Iotlitercy wg no7
Iotlitercy wg no7Iotlitercy wg no7
Iotlitercy wg no7
 
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
 
20200303 ISR プライベートセミナー:パスワードのいらない世界へ
20200303 ISR プライベートセミナー:パスワードのいらない世界へ20200303 ISR プライベートセミナー:パスワードのいらない世界へ
20200303 ISR プライベートセミナー:パスワードのいらない世界へ
 
いま、エンタープライズIdに求められるもの
いま、エンタープライズIdに求められるものいま、エンタープライズIdに求められるもの
いま、エンタープライズIdに求められるもの
 
金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG
金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG
金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG
 
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介
日立ソリューションズの取り組みとプラットフォーム関連セション内容のご紹介
 
Iddance2 fido
Iddance2 fidoIddance2 fido
Iddance2 fido
 
OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方
 

Plus de Yuichi Nakamura (8)

Implementing WebAuthn & FAPI supports on Keycloak
Implementing WebAuthn & FAPI supports on KeycloakImplementing WebAuthn & FAPI supports on Keycloak
Implementing WebAuthn & FAPI supports on Keycloak
 
About secure oss_sig_20190607
About secure oss_sig_20190607About secure oss_sig_20190607
About secure oss_sig_20190607
 
Implementing security requirements for banking API system using Open Source ...
 Implementing security requirements for banking API system using Open Source ... Implementing security requirements for banking API system using Open Source ...
Implementing security requirements for banking API system using Open Source ...
 
OAuthのHolder of Key Token
OAuthのHolder of Key TokenOAuthのHolder of Key Token
OAuthのHolder of Key Token
 
OSSセキュリティ技術の会について
OSSセキュリティ技術の会についてOSSセキュリティ技術の会について
OSSセキュリティ技術の会について
 
Open shiftmeetup 3scalelt_3
Open shiftmeetup 3scalelt_3Open shiftmeetup 3scalelt_3
Open shiftmeetup 3scalelt_3
 
Keycloakの動向
Keycloakの動向Keycloakの動向
Keycloakの動向
 
OSSセキュリティ技術の会について
OSSセキュリティ技術の会について OSSセキュリティ技術の会について
OSSセキュリティ技術の会について
 

Keycloakの紹介と最新開発動向

  • 1. © Hitachi, Ltd. 2019. All rights reserved. 株式会社 日立製作所 中村 雄一 2019/06/07 Keycloakの紹介と最新開発動向 OSSセキュリティ技術の会第5回勉強会
  • 2. © Hitachi, Ltd. 2019. All rights reserved. 1. Keycloakの概要 2. APIにおけるKeycloak 3. 開発動向 Contents 1
  • 3. © Hitachi, Ltd. 2019. All rights reserved. 1. Keycloakの概要 2
  • 4. © Hitachi, Ltd. 2019. All rights reserved. Keycloakとは 3 Red Hatを中心とするコミュニティで開発される ID情報を取り扱うOSSです。 LDAP Active Directory RDB 主要標準に対応したID連携 (Identity Federation) ソーシャルログイン (Identity Brokering) ID管理と認証 (Identity Management)
  • 5. © Hitachi, Ltd. 2019. All rights reserved. ユースケース1: シングルサインオン Webアプリ ユーザ認証 エージェント型 Webサイトアクセス 認証情報連携 OIDC/SAML ライブラリ Webアプリ ユーザ認証 Webサイトアクセス 認証情報連携 Reverse Proxy (Apache mod_openidc) Webサイトアクセス (ユーザ属性付) Proxy型 Webアプリ側では、 ライブラリを使ってOpenID Connect/SAMLで Keycloakと連携する処理を作り込む Keycloakからは「クライアントアダプタ」を提供。 DBもしくは、LDAP・AD等と 連携して認証し認証結果を Webアプリに送付 Webアプリ側での作り込み は最小限 最近Keycloak用リバプロの 「Gatekeeper」がKeycloak コミュニティよりリリース
  • 6. © Hitachi, Ltd. 2019. All rights reserved. ユースケース2: ソーシャルログイン 5 Webアプリ ユーザ認証 エージェント型での例 Webサイトアクセス 認証情報連携 OIDC/SAML ライブラリ 外部サイト KeycloakがOpenID Connectを 利用して、外部サイトの 認証画面にフォワード 認証結果 Proxy型でも同様にソーシャルログインに対応可
  • 7. © Hitachi, Ltd. 2019. All rights reserved. 2. APIにおけるKeycloakの役割 6
  • 8. © Hitachi, Ltd. 2019. All rights reserved. APIセキュリティの基本: 認証とアクセス制御 7 ユーザは誰? ⇒ユーザ認証 APIを使うアプリは誰? ⇒ クライアント認証 エンド ユーザ APIを利用する アプリ APIサーバ 誰が何をしていいの? ⇒アクセス制御 ブラウザやスマホ でアプリ利用 REST APIコール 認証方式 対応する認証 APIキー クライアント認証 OAuth/OpenID Connect クライアント認証+ユーザ認証 クライアント認証単独 「認証」が大前提 Keycloak
  • 9. © Hitachi, Ltd. 2019. All rights reserved. APIキー認証 8 問題点: ・ 標準化されていない ・ エンドユーザを認証できない 近年のオープンAPIではOAuth/OpenID Connectが主流 ->API分野でKeycloakが注目
  • 10. © Hitachi, Ltd. 2019. All rights reserved. OAuth2 と OpenID Connect 9 ・ KeycloakはOAuth/OpenID Connect両方に対応した認可サーバ アクセストークンを発行・管理 「アクセストークン」を発行してもらうためのプロトコル。「認可サーバ」が必要。 ユーザは誰? ⇒ユーザ認証 APIを使うアプリは誰? ⇒ クライアント認証 エンド ユーザ APIを利用する アプリ APIサーバ 誰が何をしていいの? ⇒アクセス制御 ブラウザやスマホ でアプリ利用 REST APIコール アクセストークン アクセストークンを 使って判断 認可 サーバ ・ OAuth2: - 基本的なプロトコル。自由度が高すぎセキュリティホールを作り込みやすい欠点 ・ OpenID Connect : - OAuthの上に認証情報(IDトークン)連携を追加 - OAuthもハードニングされている
  • 11. © Hitachi, Ltd. 2019. All rights reserved. アクセストークンの例 10 { "jti": "c26a32c4-4b48-4c2f-a7da-3b9b8ecad652", "exp": 1535424101, "nbf": 0, "iat": 1535423801, "iss": "http://localhost:8080/auth/realms/provider", "aud": "broker", "sub": "e4b11e2e-9136-409b-8720-57463c627c10", "typ": "Bearer", "azp": "broker", "auth_time": 0, "session_state": "ac1767e2-2e30-4d44-b6f3-b77935a7a0bc", "acr": "1", "allowed-origins": [], "realm_access": { "roles": [ "read", "additional", "write" ] }, "name": "Takashi Mogi", "preferred_username": "mogi", "given_name": "Takashi", "family_name": "Mogi", "email": "mogi@example.com" } アクセストークンの中身は任意 (認可サーバのソフトウェアによって異なる) Keycloakから発行されたアクセストークンの例: Keycloakでは、 ロールやユーザ名のような属性情報が アクセストークンに入っている (Keycloak独自仕様) APIサーバはこれらを見てアクセス制御できる。
  • 12. © Hitachi, Ltd. 2019. All rights reserved. 11 エンドユーザ APIサーバ サードパーティー アプリケーション LDAP DBMS 1. ログイン画面リダイレクト 6.アクセストークン 発行 (OpenID Connectの 場合は+IDトークン) 7.アクセストークン付き APIアクセス Keycloakサーバ OAuth/OpenID Connectによるトークン発行フローの例 2. LDAPやDBと 連携してユーザ認証 3. 認可コード返却 4.トークンリクエスト +クライアント秘密情報 API提供者側の認証情報を持たないため OpenID Connectが急速に普及している。 5. クライアント 認証 API提供者Authorization Code Grant
  • 13. © Hitachi, Ltd. 2019. All rights reserved. Token Introspection 12 Token Introspectionにて聞きに行く APIサーバ サードパーティー アプリケーション トークン付きAPIアクセス Keycloakサーバ ・ トークンが有効か無効かは、認可サーバが管理 認可サーバからプッシュ通知される仕掛けはなく、 認可サーバ側に聞きにいかないとわからない ・ トークンの有効性やメタデータを聞くためのI/FがRFC7662にて規定: Token Introspection ⇒ Keycloakも対応 ・ 万全を期する場合は、APIサーバが毎度アクセスがあるごとに聞きにいく 必要があることに注意。
  • 14. © Hitachi, Ltd. 2019. All rights reserved. アクセス制御処理 13 APIサーバ サードパーティー アプリケーション 1) トークン付きAPIアクセス Keycloakサーバ 2) トークン正当性・有効性確認 (Token Introspection) 3) トークンデコード 署名確認 4)トークン中の属性を 見て アクセス可否判断 5) APIの結果 アクセス制御処理 ・ Keycloak自身はアクセス制御にはほとんど関与しない ・ APIサーバでアクセス制御を行う必要。 ⇒ API数が増えると実装が煩雑な場合もある リバプロ(APIゲートウェイ)を置くこともある
  • 15. © Hitachi, Ltd. 2019. All rights reserved. Keycloakの入手 14 Keycloakのダウンロードページから ZIPファイルをダウンロード
  • 16. © Hitachi, Ltd. 2019. All rights reserved. Keycloakの起動 15 • bin/standalone.bat を実行 • Application Server(Wildfly)、お試し用のDBMS(H2DB)が 付属しているためそのまま動作する
  • 17. © Hitachi, Ltd. 2019. All rights reserved. 情報源 16 ・ 公式ドキュメントが充実していますので、まずはこちら https://www.keycloak.org/documentation.html ・ 日本語もあります(NRIさん) https://keycloak-documentation.openstandia.jp/ ・ @ITさんKeycloak超入門 https://www.atmarkit.co.jp/ait/series/7363/
  • 18. © Hitachi, Ltd. 2019. All rights reserved. 3. Keycloakの開発動向 17
  • 19. © Hitachi, Ltd. 2019. All rights reserved. Red Hat Summitで最新動向探ってきました 18 Red Hat Summit会場にて、 Keycloak主要メンバ(マネージャのMikeさん、主要開発者のMarekさん)と、 日本コミュニティの打ち合わせを開催 トピック: • Financial API (FAPI)について(後述) • WebAuthnについて(後述) • ロードマップについて Red Hat Summit(2019/5/7-9@Boston) ・ 日本コミュニティとのmeeting ・ セッション : ・ Keycloakに関連したセッションは一つだけ 「Security for Open Banking, PSD2, FAPI」 ・ 他のOpenShiftやIntegrationミドルのセッションで部品として 触れられている形
  • 20. © Hitachi, Ltd. 2019. All rights reserved. FAPI対応について: FAPIとは 19 OAuth OpenID Connect (OIDC) 「アクセストークン」をやり取りする認可の仕様。 自由度が高く、そのまま使うと セキュリティホールを作り込んでしまう。 OAuthの使い方を縛り、かつ 「アクセストークン」の中に「ID情報」を 含めてやり取りできる仕様 ⇒まだ自由度は高く、使い方によって セキュリティレベルがバラバラ OAuth/OIDCの安全な使い方を規定。 オプション仕様の使い方、下のレイヤ (SSL/TLS)の使い方等。 APIの形式などは規定されていない。 FAPI 2019年4月にFAPIのCertificationがOpenID Foundationで開始。 Conformance Testも公開 ・金融API公開にあたっての OAuth/OIDCの安全な使い方の規定。 OpenID Foundationで策定中。UKのOpenbankingで採用、世界中で採用広まりつつある Part1(ReadOnly、照会系API向け), Part2(ReadWrite,更新系API向け) が、現在Implementer’s draft。 最近CIBAプロファイルも出ました。
  • 21. © Hitachi, Ltd. 2019. All rights reserved. KeycloakのFAPIへの対応状況 20 JIRA Ticket 概要 Pull Request 対応 バージョン KEYCLOAK-2604 RFC 7636(PKCE)対応 3831 3.1.0 KEYCLOAK-5661 アクセストークンにスコープを返す 4527 3.4.0 KEYCLOAK-5811 Support client authentication in client_secret_jwt 4835 4.0.0 KEYCLOAK-6700 Support s_hash 5022 4.0.0 KEYCLOAK-6771 Support Holder of Key mechanism for Tokens ([mtls]対応) 5083 4.0.0 KEYCLOAK-6768 IDトークン暗号化 (optional) 5779 レビュー中 KEYCLOAK-6770 トークン類の ES256/384/512 署名 5533 4.5.0 KEYCLOAK-8460 リクエストオブジェクトの ES256/384/512署名 5603 4.7.0 KEYCLOAK-9756 トークン&リクエストオブジェクトの PS256/384/512署名対応 5974 6.0.0 机上検証し、必要な機能群を乗松さん中心に実装 CIBAはまだですが、 Part1,2は概ね実装できたと思っています。
  • 22. © Hitachi, Ltd. 2019. All rights reserved. FAPIのConformance Testパスに向けて 21 ・ Keycloakコミュニティとしても、FAPIのテストをパスさせる予定。 ⇒ 実態としては日本勢に期待されている。 コミュニティ打合せの結果、次の日の セッション「Security for Open Banking, PSD2, FAPI」にて、 “We Partner with Hitachi for Open Conformance Testing for FAPI” と記載 ・ 「OSSセキュリティ技術の会」を通じて日本勢で取組中。 ・ 課題解決に向けて下記技術の会Githubで議論中、適宜upstream。 https://github.com/jsoss-sig/keycloak-fapi/
  • 23. © Hitachi, Ltd. 2019. All rights reserved. WebAuthnについて 22 ・ まずは、2FA対応予定 ・ WebAuthnロジックそのものについては、Keycloak本体に 持つつもりは無く、外部ライブラリ活用の方針 ・ ライブラリとしては、現在webauthn4jが有力候補。 認証プラグイン(authenticator)も合わせて開発・提案中。 https://github.com/webauthn4j/keycloak-webauthn-authenticator ・ 多要素認証全般についてアーキテクチャ見直しが進んでおり githubで延々議論中。 https://github.com/keycloak/keycloak-community/pull/5 ⇒ これらに伴いSPIが変更になる可能性があり、要注意。
  • 24. © Hitachi, Ltd. 2019. All rights reserved. WebAuthn authenticator開発状況 23 こちらにて開発中。使い方もあります https://github.com/webauthn4j/keycloak-webauthn-authenticator 一通り動くものはでき、keycloak-devで議論しながらブラッシュアップ中。 OS ブラウザ 認証器 ユースケース Windows10 Chrome Firefox Yubico security Key 2要素認証 Edge PC内蔵指紋認証器 2要素認証 指だけ認証 MacOS Mojave Chrome Firefox Yubico security Key 2要素認証 Android 8.1 Chrome 内蔵指紋認証器 確認中 下記で動作確認済(&中)
  • 25. © Hitachi, Ltd. 2019. All rights reserved. Keycloakにユーザプロファイル登録 (1) 24 ここのパスワード 入力は不要にする予定
  • 26. © Hitachi, Ltd. 2019. All rights reserved. 25 Keycloakにユーザプロファイル登録 (2)
  • 27. © Hitachi, Ltd. 2019. All rights reserved. Keycloakにログイン (1) 26
  • 28. © Hitachi, Ltd. 2019. All rights reserved. Keycloakにログイン (2) 27
  • 29. © Hitachi, Ltd. 2019. All rights reserved. WebAuthn対応: 今後の予定 28 ・ webauthn4j, authenticatorともに、Keycloakコミュニティ側には認知 (newsletterに掲載されたので) ・ keycloak-community repoにdesignドキュメント出して、本格的に入れ 込み開始予定 ・ Keyconf19でも議論予定
  • 30. © Hitachi, Ltd. 2019. All rights reserved. ロードマップについて【非公開】 29
  • 31. © Hitachi, Ltd. 2019. All rights reserved. Keycloakコミュニティトピック 30 ・ バージョニングポリシー 4半期に1回、メジャーバージョン番号が上がるようになった。 Continuous delivery modelのためらしいが。。 https://www.keycloak.org/2019/04/versioning.html ・ ブログの刷新 https://www.keycloak.org/blog.html - 「Keycloak news letter」が月1ぐらい出るように。 - ゲスト記事も受け付けるようになった。Keycloak-users等で申し出ればいい模様。 ・ keycloak-community リポジトリ MLでは議論が収束しなそうな大き目のトピックについては、 https://github.com/keycloak/keycloak-community にdesignドキュメントをPR出して進めることができるように ・ KeyConf19 Keycloakの初のカンファレンス。UKで6/12,13開催予定。 https://www.hartree.stfc.ac.uk/Pages/KeyConf.aspx
  • 32. 31© Hitachi, Ltd. 2019. All rights reserved. 他社所有商標に関する表示 • HITACHIは、株式会社 日立製作所の商標または登録商標です。 • Red Hatは米国およびその他の国におけるRed Hat, Inc.の登録商標です。 • GitHub は、GitHub Inc.の米国およびその他の国における商標または登録商標です。 • TwitterはTwitter Inc.の米国およびその他の国における商標または登録商標です。 • FacebookはFacebook Inc.の米国およびその他の国における商標または登録商標です。 • Kubernetesは米国およびその他の国におけるThe Linux Foundationの登録商標です。 • OpenShiftは米国およびその他の国におけるRed Hat, Inc.の登録商標です。 • その他記載の会社名、製品名などは、それぞれの会社の商標もしくは登録商標です。