More Related Content
What's hot (20)
PPTX
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会ShuheiUda
PPTX
Azure API Management 俺的マニュアル貴志 上坂
Similar to Keycloak入門-OpenID ConnectによるAPIセキュリティ (20)
PDF
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデートオラクルエンジニア通信
PPTX
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介Yuki Takahashi
PDF
MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料 yoyamasaki
More from Yuichi Nakamura (7)
PDF
Implementing security requirements for banking API system using Open Source ...Yuichi Nakamura
Keycloak入門-OpenID ConnectによるAPIセキュリティ
- 1. © Hitachi, Ltd. 2017. All rights reserved.
OSSセキュリティ技術の会第2回勉強会
株式会社 日立製作所
OSSソリューションセンタ
2017/11/29
茂木 昂士
Keycloak入門
- OpenID ConnectによるAPIセキュリティ -
- 2. © Hitachi, Ltd. 2017. All rights reserved.
自己紹介
1
- 茂木 昂士(もぎ たかし)
- 所属 : 日立製作所 OSSソリューションセンタ
- 業務 : APIセキュリティに関連するOSSの調査・検証
- @IT連載
- Keycloak超入門
- http://www.atmarkit.co.jp/ait/series/7363/
- 4. © Hitachi, Ltd. 2017. All rights reserved.
APIの利用拡大
3
- 様々な分野でAPIの活用が広まってきている
- 製造や流通業界
- セキュリティが厳しい金融業界でも
- APIの活用による複数業界の融合を狙っている
- API エコノミー構築の重要性
- “利用してもらう”ことが必要
- 5. © Hitachi, Ltd. 2017. All rights reserved.
APIにおけるセキュリティ
4
- APIに対するセキュリティが重要になっている
- Key認証やBasic認証
- FW, API Gatewayによる境界防御
- “使いやすさ”と”安全性”が重要
Authorization :
Basic dXNlcjpwYXNzd2Q=
- Basic認証の例
- 7. © Hitachi, Ltd. 2017. All rights reserved.
問題点
6
パスワード漏えいリスク
アクセスコントロールができない
- 8. © Hitachi, Ltd. 2017. All rights reserved.
OAuth2 と OpenID Connect
7
- OAuth2
- 認可(Authz)プロトコル
- アクセストークンによる制御
- Scopeによるアクセスコントロールが可能
- OpenID Connect
- 認証(Auth)プロトコル
- OAuthに”認証情報”を追加した (IDToken)
- JWT(“jot”)により認証情報を引き回し
- 9. © Hitachi, Ltd. 2017. All rights reserved. 8
Twitterの例
https://www.flickr.com/photos/xmodulo/11378700643
- 10. © Hitachi, Ltd. 2017. All rights reserved.
OAuth2によるセキュリティ
9
Access Token
パスワードは渡さない
Scopeによるアクセス制御
- 11. © Hitachi, Ltd. 2017. All rights reserved.
OpenID Connectによる認証
10
- ID Token
- OpenID プロバイダーで認証された情報を含む
- 署名済みのJWTを利用
- 署名を検証することでユーザを認証する
ヘッダー.ペイロード.署名
Base64Urlでエンコード後、“.”で結合
- 12. © Hitachi, Ltd. 2017. All rights reserved.
ID Tokenの構成
11
eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJGSj
g2R2NGM2pUYk5MT2NvNE52WmtVQ0lVbWZZQ3FvcXRP
UWVNZmJoTmxFIn0.eyJqdGkiOiI4YjIyMzM1Yi0yOGE4LT
Q0ZDEtOTJlZi1iMDFkYTgyYmQwYWIiLCJleHAiOjE1MTE4
MzYwNjEsIm5iZiI6MCwiaWF0IjoxNTExODM2MDAxLCJpc3
MiOiJodHRwOi8va2V5Y2xvYWsub3NzLmV4YW1wbGUuY
28uanAvYXV0aC9yZWFsbXMvZGVtbyIsImF1ZCI6ImNsa
WVudCIsInN1YiI6IjI4ZjUzNDk5LThjMzAtNGM1OC1iZDYyL
Tc5N2ExZDZiZmM0NyIsInR5cCI6IklEIiwiYXpwIjoiY2xpZW
50IiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiN
mYxNWQxY2UtMDhkNi00NzgzLTliZGQtN2U2YTgzMDZjNT
ZmIiwiYWNyIjoiMSIsIm5hbWUiOiJUYWthc2hpIE1vZ2kiLCJ
wcmVmZXJyZWRfdXNlcm5hbWUiOiJtb2dpIiwiZ2l2ZW5fb
mFtZSI6IlRha2FzaGkiLCJmYW1pbHlfbmFtZSI6Ik1vZ2kifQ
.c1L3q0wOuQCAL8FfUKnsBV22W0BkTkDFtcWKLiPigGx
MTADXs7wkoKX7iSjYmN4iwQJVAoEvoTdT-
9U1NCjTLrD2dWi8ASj7LxG79yeeR--YOy87kJw86Ht3y-
dBCoCFUtK2mz9v2TTSiDXc4LK0qBeUgOsDYs6DoROgzV
PkANA
Header
Payload
Signature
- 13. © Hitachi, Ltd. 2017. All rights reserved.
デコード済みID Token
12
{
"jti": "8b22335b-28a8-44d1-92ef-b01da82bd0ab",
"exp": 1511836061,
"nbf": 0,
"iat": 1511836001,
"iss": "http://keycloak.oss.example.co.jp/auth/realms/demo",
"aud": "client",
"sub": "28f53499-8c30-4c58-bd62-797a1d6bfc47",
"typ": "ID",
"azp": "client",
"auth_time": 0,
"session_state": "6f15d1ce-08d6-4783-9bdd-7e6a8306c56f",
"acr": "1",
"name": "Takashi Mogi",
"preferred_username": "mogi",
"given_name": "Takashi",
"family_name": "Mogi"
}
{
"alg": "RS256",
"typ": "JWT",
"kid": "FJ86GcF3jTbNLOco4NvZkUCIUmfYCqoqtOQeMfbhNlE"
}
署名アルゴリズムなど
認証したユーザの情報や
トークンの有効期限など
- 14. © Hitachi, Ltd. 2017. All rights reserved.
OpenID Connectによる認証
13
ID Token
“USER”として認証
署名の検証
“USER”であることの確認
- 16. © Hitachi, Ltd. 2017. All rights reserved.
主要なOSS
15
- OpenAM
- 元は商用製品であり、信頼性/安定性が高い
- 導入実績も多い
- 現在はOSSとしての動向が不透明
- Keycloak
- 比較的新しいソフトウェア
- OAuth, OIDC, SAMLに対応している
- 商用ではRed Hatに有償版が提供されている
今回はKeycloakについて紹介
- 17. © Hitachi, Ltd. 2017. All rights reserved.
@ITでの連載
16
http://www.keycloak.org
http://www.atmarkit.co.jp/ait/series/7363/
- 18. © Hitachi, Ltd. 2017. All rights reserved.
Keycloakの動作環境
17
- OS
- Linux, Windows, Mac
- APサーバ
- Wildfly上で動作
- ダウンロード時点で付属
- データベース
- 初期設定時はH2DB
- PostgreSQL, MySQL, Oracleなど対応
- 19. © Hitachi, Ltd. 2017. All rights reserved.
Keycloakの特徴(1/3)
18
- 認可プロバイダとして動作するソフトウェア
- ユーザを認証し、アクセストークンを発行する
- 主要なプロトコルに対応
- OpenID Connect
- OAuth 2.0
- SAML
- OpenID Certificationも取得
※ OpenID Foundationが行う認定
- 20. © Hitachi, Ltd. 2017. All rights reserved.
Keycloakの特徴(2/3)
19
Identity Brokering, Social Login
- Twitter, Facebookでログインなど
- SAML, OIDCのプロバイダとも連携
User Federation
- LDAPやADと連携できる
- 既存の資産を利用できる
http://www.keycloak.org/about.html より引用
- 21. © Hitachi, Ltd. 2017. All rights reserved.
Keycloakの特徴(3/3)
20
- 豊富なクライアントアダプター
- Keycloakと連携するためのライブラリ
- 主要なFramework,APサーバ向けに提供されている
- Wildfly
- JBoss EAP
- Spring Framework
- Tomcat
- Node.js
- Jetty
- 22. © Hitachi, Ltd. 2017. All rights reserved.
そのほかの機能
21
- アクセス制御
- User-Managed Access(UMA)
- クライアントアダプターを使うことで詳細なアクセス
制御が可能
- HA構成
- APサーバのWildflyの機能を使って実現
- 23. © Hitachi, Ltd. 2017. All rights reserved. 22
エンドユーザ
APIサーバ
Keycloak
クライアントアダプターサードパーティー
アプリケーション
LDAP
DBMS
1. ログイン
2. コード送信
3.トークン発行
4.トークン付きAPIアクセス
5.トークン検査要求
6.APIレスポンス
Keycloakサーバ
KeycloakによるAPI連携
- 25. © Hitachi, Ltd. 2017. All rights reserved.
デモ内容
24
- Keycloakの画面説明
- 管理コンソール
- Keycloakでログイン
- Authorization code flow
- Direct access grant
- ID Tokenの中身
- https://jwt.io
- 26. © Hitachi, Ltd. 2017. All rights reserved.
株式会社 日立製作所
OSS ソリューションセンター
- OpenID Connectによるシングルサインオン -
Keycloak 入門
2017/11/29
茂木 昂士
END
25
- 27. 26© Hitachi, Ltd. 2017. All rights reserved.
他社所有商標に関する表示
• HITACHIは、株式会社 日立製作所の商標または登録商標です。
• Wildfly, JBossは米国およびその他の国におけるRed Hat, Inc.の登録商標です。
• Spring Frameworkは米国及びその他の国におけるPivotal Software, Inc. の登録商標です。
• Node.jsは米国およびその他の国におけるJoyent, Inc.の登録商標です。
• Tomcatは米国およびその他の国におけるApache Software Foundationの登録商標です。
• JETTYは米国およびその他の国におけるJETTY NATIONAL, INC の登録商標です。
• その他記載の会社名、製品名などは、それぞれの会社の商標もしくは登録商標です。
画像提供元
- いらすとや http://www.irasutoya.com/