SlideShare a Scribd company logo
1 of 28
© Hitachi, Ltd. 2017. All rights reserved.
OSSセキュリティ技術の会第2回勉強会
株式会社 日立製作所
OSSソリューションセンタ
2017/11/29
茂木 昂士
Keycloak入門
- OpenID ConnectによるAPIセキュリティ -
© Hitachi, Ltd. 2017. All rights reserved.
自己紹介
1
- 茂木 昂士(もぎ たかし)
- 所属 : 日立製作所 OSSソリューションセンタ
- 業務 : APIセキュリティに関連するOSSの調査・検証
- @IT連載
- Keycloak超入門
- http://www.atmarkit.co.jp/ait/series/7363/
© Hitachi, Ltd. 2017. All rights reserved.
1. APIとセキュリティ
2
© Hitachi, Ltd. 2017. All rights reserved.
APIの利用拡大
3
- 様々な分野でAPIの活用が広まってきている
- 製造や流通業界
- セキュリティが厳しい金融業界でも
- APIの活用による複数業界の融合を狙っている
- API エコノミー構築の重要性
- “利用してもらう”ことが必要
© Hitachi, Ltd. 2017. All rights reserved.
APIにおけるセキュリティ
4
- APIに対するセキュリティが重要になっている
- Key認証やBasic認証
- FW, API Gatewayによる境界防御
- “使いやすさ”と”安全性”が重要
Authorization :
Basic dXNlcjpwYXNzd2Q=
- Basic認証の例
© Hitachi, Ltd. 2017. All rights reserved.
Basic認証によるAPIセキュリティ
5
© Hitachi, Ltd. 2017. All rights reserved.
問題点
6
パスワード漏えいリスク
アクセスコントロールができない
© Hitachi, Ltd. 2017. All rights reserved.
OAuth2 と OpenID Connect
7
- OAuth2
- 認可(Authz)プロトコル
- アクセストークンによる制御
- Scopeによるアクセスコントロールが可能
- OpenID Connect
- 認証(Auth)プロトコル
- OAuthに”認証情報”を追加した (IDToken)
- JWT(“jot”)により認証情報を引き回し
© Hitachi, Ltd. 2017. All rights reserved. 8
Twitterの例
https://www.flickr.com/photos/xmodulo/11378700643
© Hitachi, Ltd. 2017. All rights reserved.
OAuth2によるセキュリティ
9
Access Token
パスワードは渡さない
Scopeによるアクセス制御
© Hitachi, Ltd. 2017. All rights reserved.
OpenID Connectによる認証
10
- ID Token
- OpenID プロバイダーで認証された情報を含む
- 署名済みのJWTを利用
- 署名を検証することでユーザを認証する
ヘッダー.ペイロード.署名
Base64Urlでエンコード後、“.”で結合
© 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
© 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"
}
署名アルゴリズムなど
認証したユーザの情報や
トークンの有効期限など
© Hitachi, Ltd. 2017. All rights reserved.
OpenID Connectによる認証
13
ID Token
“USER”として認証
署名の検証
“USER”であることの確認
© Hitachi, Ltd. 2017. All rights reserved.
2. APIセキュリティにおけるOSS
14
© Hitachi, Ltd. 2017. All rights reserved.
主要なOSS
15
- OpenAM
- 元は商用製品であり、信頼性/安定性が高い
- 導入実績も多い
- 現在はOSSとしての動向が不透明
- Keycloak
- 比較的新しいソフトウェア
- OAuth, OIDC, SAMLに対応している
- 商用ではRed Hatに有償版が提供されている
今回はKeycloakについて紹介
© Hitachi, Ltd. 2017. All rights reserved.
@ITでの連載
16
http://www.keycloak.org
http://www.atmarkit.co.jp/ait/series/7363/
© Hitachi, Ltd. 2017. All rights reserved.
Keycloakの動作環境
17
- OS
- Linux, Windows, Mac
- APサーバ
- Wildfly上で動作
- ダウンロード時点で付属
- データベース
- 初期設定時はH2DB
- PostgreSQL, MySQL, Oracleなど対応
© Hitachi, Ltd. 2017. All rights reserved.
Keycloakの特徴(1/3)
18
- 認可プロバイダとして動作するソフトウェア
- ユーザを認証し、アクセストークンを発行する
- 主要なプロトコルに対応
- OpenID Connect
- OAuth 2.0
- SAML
- OpenID Certificationも取得
※ OpenID Foundationが行う認定
© 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 より引用
© Hitachi, Ltd. 2017. All rights reserved.
Keycloakの特徴(3/3)
20
- 豊富なクライアントアダプター
- Keycloakと連携するためのライブラリ
- 主要なFramework,APサーバ向けに提供されている
- Wildfly
- JBoss EAP
- Spring Framework
- Tomcat
- Node.js
- Jetty
© Hitachi, Ltd. 2017. All rights reserved.
そのほかの機能
21
- アクセス制御
- User-Managed Access(UMA)
- クライアントアダプターを使うことで詳細なアクセス
制御が可能
- HA構成
- APサーバのWildflyの機能を使って実現
© Hitachi, Ltd. 2017. All rights reserved. 22
エンドユーザ
APIサーバ
Keycloak
クライアントアダプターサードパーティー
アプリケーション
LDAP
DBMS
1. ログイン
2. コード送信
3.トークン発行
4.トークン付きAPIアクセス
5.トークン検査要求
6.APIレスポンス
Keycloakサーバ
KeycloakによるAPI連携
© Hitachi, Ltd. 2017. All rights reserved.
3. デモ
23
© Hitachi, Ltd. 2017. All rights reserved.
デモ内容
24
- Keycloakの画面説明
- 管理コンソール
- Keycloakでログイン
- Authorization code flow
- Direct access grant
- ID Tokenの中身
- https://jwt.io
© Hitachi, Ltd. 2017. All rights reserved.
株式会社 日立製作所
OSS ソリューションセンター
- OpenID Connectによるシングルサインオン -
Keycloak 入門
2017/11/29
茂木 昂士
END
25
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/
Keycloak入門-OpenID ConnectによるAPIセキュリティ

More Related Content

What's hot

Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発Takuro Sasaki
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介Hiroyuki Wada
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Preferred Networks
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5Takahiro YAMADA
 
KeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについてKeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについてHiroyuki Wada
 
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法についてAzure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法についてShinya Yamaguchi
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介AdvancedTechNight
 
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014Nov Matake
 
インフラCICDの勘所
インフラCICDの勘所インフラCICDの勘所
インフラCICDの勘所Toru Makabe
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation
 
Keycloak & midPoint の紹介
Keycloak & midPoint の紹介Keycloak & midPoint の紹介
Keycloak & midPoint の紹介Hiroyuki Wada
 
実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記Hiroyuki Ohnaka
 
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開するKeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開するHitachi, Ltd. OSS Solution Center.
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話Daichi Koike
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 

What's hot (20)

Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
 
KeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについてKeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについて
 
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法についてAzure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
 
インフラCICDの勘所
インフラCICDの勘所インフラCICDの勘所
インフラCICDの勘所
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
 
Keycloak & midPoint の紹介
Keycloak & midPoint の紹介Keycloak & midPoint の紹介
Keycloak & midPoint の紹介
 
Keycloakの最近のトピック
Keycloakの最近のトピックKeycloakの最近のトピック
Keycloakの最近のトピック
 
Keycloak開発入門
Keycloak開発入門Keycloak開発入門
Keycloak開発入門
 
実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記
 
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開するKeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
HTTP/2 入門
HTTP/2 入門HTTP/2 入門
HTTP/2 入門
 
Serverless時代のJavaについて
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについて
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 

Similar to Keycloak入門-OpenID ConnectによるAPIセキュリティ

Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotJazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotNobuyuki Matsui
 
Keycloakの紹介と最新開発動向
Keycloakの紹介と最新開発動向Keycloakの紹介と最新開発動向
Keycloakの紹介と最新開発動向Yuichi Nakamura
 
IETF96 Update oauth tokbind
IETF96 Update oauth tokbindIETF96 Update oauth tokbind
IETF96 Update oauth tokbindKaoru Maeda
 
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向NTT Software Innovation Center
 
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデートオラクルエンジニア通信
 
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介Yuki Takahashi
 
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~Daisuke Morishita
 
Open shiftmeetup 3scalelt_3
Open shiftmeetup 3scalelt_3Open shiftmeetup 3scalelt_3
Open shiftmeetup 3scalelt_3Yuichi Nakamura
 
オープンソースのトレンドとビジネス活用2014 〜メリットと安心・安全に活用するポイント〜
オープンソースのトレンドとビジネス活用2014 〜メリットと安心・安全に活用するポイント〜オープンソースのトレンドとビジネス活用2014 〜メリットと安心・安全に活用するポイント〜
オープンソースのトレンドとビジネス活用2014 〜メリットと安心・安全に活用するポイント〜ThinkIT_impress
 
20150613 Azure最新Update
20150613 Azure最新Update20150613 Azure最新Update
20150613 Azure最新UpdateKeiji Kamebuchi
 
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...Insight Technology, Inc.
 
MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料
MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料 MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料
MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料 yoyamasaki
 
KYOSOPRAS 20191003 登壇資料
KYOSOPRAS 20191003 登壇資料KYOSOPRAS 20191003 登壇資料
KYOSOPRAS 20191003 登壇資料KYOSOPRAS
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
CLOUDIAN at Support Engineer Night
CLOUDIAN at Support Engineer NightCLOUDIAN at Support Engineer Night
CLOUDIAN at Support Engineer NightCLOUDIAN KK
 
Japan elasticusergroup01 Acroquest
Japan elasticusergroup01 AcroquestJapan elasticusergroup01 Acroquest
Japan elasticusergroup01 AcroquestHiroshi Yoshioka
 

Similar to Keycloak入門-OpenID ConnectによるAPIセキュリティ (20)

Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotJazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & Robot
 
Keycloakの紹介と最新開発動向
Keycloakの紹介と最新開発動向Keycloakの紹介と最新開発動向
Keycloakの紹介と最新開発動向
 
IETF96 Update oauth tokbind
IETF96 Update oauth tokbindIETF96 Update oauth tokbind
IETF96 Update oauth tokbind
 
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向
 
Keycloakの動向
Keycloakの動向Keycloakの動向
Keycloakの動向
 
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデート
 
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
 
OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方OAuth 2.0のResource Serverの作り方
OAuth 2.0のResource Serverの作り方
 
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
 
Open shiftmeetup 3scalelt_3
Open shiftmeetup 3scalelt_3Open shiftmeetup 3scalelt_3
Open shiftmeetup 3scalelt_3
 
Ietf95 http2
Ietf95 http2Ietf95 http2
Ietf95 http2
 
オープンソースのトレンドとビジネス活用2014 〜メリットと安心・安全に活用するポイント〜
オープンソースのトレンドとビジネス活用2014 〜メリットと安心・安全に活用するポイント〜オープンソースのトレンドとビジネス活用2014 〜メリットと安心・安全に活用するポイント〜
オープンソースのトレンドとビジネス活用2014 〜メリットと安心・安全に活用するポイント〜
 
OSS光と闇
OSS光と闇OSS光と闇
OSS光と闇
 
20150613 Azure最新Update
20150613 Azure最新Update20150613 Azure最新Update
20150613 Azure最新Update
 
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
 
MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料
MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料 MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料
MySQL 8.0で強化されたGIS機能のご紹介+α:「FOSS4G Tokai 2018 」での発表資料
 
KYOSOPRAS 20191003 登壇資料
KYOSOPRAS 20191003 登壇資料KYOSOPRAS 20191003 登壇資料
KYOSOPRAS 20191003 登壇資料
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
CLOUDIAN at Support Engineer Night
CLOUDIAN at Support Engineer NightCLOUDIAN at Support Engineer Night
CLOUDIAN at Support Engineer Night
 
Japan elasticusergroup01 Acroquest
Japan elasticusergroup01 AcroquestJapan elasticusergroup01 Acroquest
Japan elasticusergroup01 Acroquest
 

More from Yuichi Nakamura

Implementing WebAuthn & FAPI supports on Keycloak
Implementing WebAuthn & FAPI supports on KeycloakImplementing WebAuthn & FAPI supports on Keycloak
Implementing WebAuthn & FAPI supports on KeycloakYuichi Nakamura
 
About secure oss_sig_20190607
About secure oss_sig_20190607About secure oss_sig_20190607
About secure oss_sig_20190607Yuichi Nakamura
 
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 ...Yuichi Nakamura
 
OAuthのHolder of Key Token
OAuthのHolder of Key TokenOAuthのHolder of Key Token
OAuthのHolder of Key TokenYuichi Nakamura
 
OSSセキュリティ技術の会について
OSSセキュリティ技術の会についてOSSセキュリティ技術の会について
OSSセキュリティ技術の会についてYuichi Nakamura
 
OSSセキュリティ技術の会について
OSSセキュリティ技術の会について OSSセキュリティ技術の会について
OSSセキュリティ技術の会について Yuichi Nakamura
 

More from Yuichi Nakamura (6)

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セキュリティ技術の会について
 
OSSセキュリティ技術の会について
OSSセキュリティ技術の会について OSSセキュリティ技術の会について
OSSセキュリティ技術の会について
 

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/
  • 3. © Hitachi, Ltd. 2017. All rights reserved. 1. APIとセキュリティ 2
  • 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認証の例
  • 6. © Hitachi, Ltd. 2017. All rights reserved. Basic認証によるAPIセキュリティ 5
  • 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”であることの確認
  • 15. © Hitachi, Ltd. 2017. All rights reserved. 2. APIセキュリティにおけるOSS 14
  • 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連携
  • 24. © Hitachi, Ltd. 2017. All rights reserved. 3. デモ 23
  • 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/