SlideShare uma empresa Scribd logo
1 de 49
© Hitachi, Ltd. 2022. All rights reserved.
KeycloakでAPI認可に入門する
OSSセキュリティ技術の会第10回勉強会 【オンライン】
2022/02/09
日立製作所 OSSソリューションセンタ
中村 雄一
田畑 義之
© Hitachi, Ltd. 2022. All rights reserved.
Contents
1
1. Keycloakとは
2. API認可の基礎
3. Keycloakの基本概念
4. API認可をKeycloakで試す
2
© Hitachi, Ltd. 2022. All rights reserved.
Webベースのシステム
Webアプリ
ケーション
Webシステム
ブラウザー
ネイティブ
アプリ
REST API
ユーザー
他システム
HTTPリクエスト
HTML画面
HTTPリクエスト(REST)
処理結果
マイクロサービス
サービス サービス
サービス
HTTPリクエスト(REST)
処理結果
3
© Hitachi, Ltd. 2022. All rights reserved.
認証と認可
ユーザー クレデンシャルを提示
(ユーザー名とパスワード等)
システム
(インターネットバンキング)
Webアプリケーション
(銀行Web)
REST API
(残高照会 API)
外部アプリケーション
(家計簿アプリ)
残高照会メニュー操作
残高照会API呼び出し
家計簿アプリに
残高照会を認可
残高情報
①認証
誰かを確認
②認可
アクセス権を与える
③認可判断
権限の確認
4
© Hitachi, Ltd. 2022. All rights reserved.
Keycloakとは
• OSSの「IAM(Identity and Access Management)」のソフトウェア
https://www.keycloak.org/
• コミュニティが活発・オープンで、商用利用も広く進んでいる
日本人のメンテナも!(乗松さん@日立)
• 最新標準にも対応。v15.0では、OpenID FoundationのFAPI, FAPI-CIBA,
Open Banking Brasil FAPIという仕様にも正式対応。
https://openid.net/certification/
• 豊富な機能
分類 機能 概要
認証 認証情報管理 認証に必要なユーザ名・属性情報を管理
パスワード認証 ユーザ名・パスワードに基づき認証
多要素認証 OTP(FreeOTPベース)や、WebAuthnに基づいた多要素認証を提供
外部連携 外部の認証情報と連携して認証する
認可 権限管理 ユーザやアプリに紐づく権限を管理
認可サービス 権限とリソースの紐づけを管理し、認可判断を実行する
認証・認可連携
プロトコル
OAuth 2.0
認可サーバ
APIの認可サーバとして必要なエンドポイントを提供(認可エンドポイ
ント、トークンエンドポイント、トークン失効エンドポイント等)
OpenID Connect OP OpenID ConnectのOPサーバとしての機能を提供
SAML IdP SAMLのIdPサーバとしての機能を提供
カスタマイズ
ポイント
SPI 様々な拡張を作りこむためのJavaのインタフェース
クライアントポリシー クライアント毎に異なった振る舞いをKeycloakに持たせるための拡張
フレームワーク
アプリ用
ライブラリ
クライアントアダプタ アプリにOpenID Connect RP,SAML SPの機能を持たせたり、認可
サービスのクライアント機能を持たせるアプリ用ライブラリ
5
© Hitachi, Ltd. 2022. All rights reserved.
Keycloakでできること
Webアプリ
A
Webアプリ
B
Webアプリ
C
システム
Keycloak
認証
処理
認可
処理
REST API
群
認証や
認可の
委譲
外部の
クレデンシャル
ソーシャル
サイトの認証
Keycloak内の
クレデンシャル
ユースケース①
OAuth2.0の枠組みに
適切に従った「API認可」
ユースケース②
クレデンシャルの入力は
一度だけ「SSO」
ユースケース③
外部のクレデンシャルや
認証システムとの連携
連
携
6
© Hitachi, Ltd. 2022. All rights reserved.
Keycloakの構成
Keycloak
JDK
Wildfly [アプリケーションサーバー]
JDBC
ドライバー
OS
RDB
この単位のzipファイルが配布
Keycloakの設定情報を格納。
デフォルトではH2という
DBが配布物に含まれている。
本番用途では外部DBが推奨
Quarkusという軽量なアプリケーションサーバ
で動くものも開発中
7
© Hitachi, Ltd. 2022. All rights reserved.
Keycloakのインストール
・ 公式サイトよりzipまたはtar.gzをダウンロード。
書籍で使っているバージョンは15.0.2。本勉強会時点の最新版は16.1.0
・ 前提環境: Java(JDK 8以上)。最低でも512MのRAMと1Gのディスク容量
・ インストール&起動 (Windowsの場合)
zipを展開し、コマンドプロンプトで展開したディレクトリに移動し、
.binstandalone.bat
とするだけ。
8
© Hitachi, Ltd. 2022. All rights reserved.
管理者ユーザーを作成
ウェルカムページ(http://localhost:8080/)をブラウザで開き、管理者ユーザーを作成
ユーザー名とパスワードを入力し
管理者ユーザーを作成
9
© Hitachi, Ltd. 2022. All rights reserved.
管理コンソールにログイン
・ Keycloakの設定は管理コンソールから行う。
・ ウェルカムページから「Administration Console」を選択し、管理者ユーザーでログイン
10
© Hitachi, Ltd. 2022. All rights reserved.
レルム作成: レルムとは
「レルム」とはKeycloak の管理単位のことで、ユーザーなどの情報はレルム単位で管理。
「master」レルムは、すべてのレルムを管理できる特別なレルム(先ほどは「master」レルム)
任意にレルムを作成して管理ができ(部署単位、用途単位等)、マルチテナントのような使い方もできる。
Keycloakサーバー
master レルム
department A レルム
department B レルム
クライアント
ユーザー
レルムの設定
グループ
セッション
ロール
管理者ユーザー
クライアント
ユーザー
レルムの設定
グループ
セッション
ロール
…
11
© Hitachi, Ltd. 2022. All rights reserved.
レルムの作成
API認可の動作確認用に、「demo-api」レルムを作成
12
© Hitachi, Ltd. 2022. All rights reserved.
レルムを確認
© Hitachi, Ltd. 2022. All rights reserved.
Contents
13
1. Keycloakとは
2. API認可の基礎
3. Keycloakの基本概念
4. API認可をKeycloakで試す
14
© Hitachi, Ltd. 2022. All rights reserved.
API認可とは
・ API 認可: API 呼び出しを行う際の認可
・ API認可では、「OAuth 2.0」が広く使われている。
・ OAuth 2.0 (以下OAuth)
ユーザーのリソース(protected resource)へのアクセスを
外部アプリケーション(3rd party application)に認可するためのプロトコル
RFC6749で規定
15
© Hitachi, Ltd. 2022. All rights reserved.
OAuthの登場人物とAPI認可
認可サーバー
(Keycloak)
クライアント
(家計簿アプリ)
リソースサーバー
(X銀行残高照会API)
アクセスへの
同意
API呼び出し
(w/ アクセストークン)
アクセストークン発行
(read_balanceスコープ付き)
リソースオーナー
(ブラウザー)
① リソースオーナーが
家計簿アプリに残高情報へのア
クセス権を認可
② 認可された証拠となる
トークンを発行
③ トークンの提示
リソース
(残高情報)
④ トークンをもとに
認可判断
★アクセストークン:
API を呼び出すときに使う「認可された証拠」
リソースアクセスがクライアントに認可されたかを示す 「スコープ(scope)」が関連付けられている。
OAuthではアクセストークン発行のためのフローをいくつか規定
16
© Hitachi, Ltd. 2022. All rights reserved.
OAuthの典型的なフロー : 認可コードフロー
クライアント
(例:家計簿アプリ)
2. 認可リクエスト
(w/クライアントID、スコープ、
リダイレクトURI)
認可サーバー
(Keycloak)
3. ユーザー認証、4. 同意の取得
5. 認可レスポンス
(w/認可コード)
リソースオーナー
(ブラウザー)
1. API連携指示
6. トークンリクエスト
(w/認可コード、クライアントID、
クライアントシークレット)
8. トークンレスポンス
(w/アクセストークン、
リフレッシュトークン)
クライアントID・シークレット リダイレクトURI
リソースサーバー
(例:X銀行残高照会API)
9. API呼び出し (w/アクセストークン)
事前に認可サーバーが発行 認可サーバに事前登録
Keycloakでは
Valid Redirect URIsに登録
家計簿メニュー
残高更新
7. クライアント認証と
認可コード・リダイレクトURIの確認
Keycloakの場合:
ブラウザとKeycloakの間に
セッション確立
認可エンドポイント
リダイレクトURI。
クライアントに実装 トークン
エンドポイント
X銀行ログイン
ID
pass
家計簿アプリが
以下のアクセス
を求めています
残高照会
許可する
X銀行残高連携
家計簿メニュー
17
© Hitachi, Ltd. 2022. All rights reserved.
Keycloakにおけるアクセストークン
eyJhbGc<略> NmxRIn0. eyJleHA<略>JteRq5n.eyJhbOi<略>7JqzJwbg
ヘッダー
(Base64URLエンコード)
ペイロード(JWT)
(Base64URLエンコード)
署名
(Base64URLエンコード)
{
"alg": "RS256",
"typ": "JWT",
"kid":"SPeVQvHYuixD2g-
vgNvnaZdBFHqmP25N_t5o2Ly
5Es"
}
{
"exp" : 1634452276,
"iat" : 1634451676,
"auth_time" : 1634450659,
"iss" : "https://api.example.com/auth/realms/demo",
"aud" : "account",
"sub" : "e7565c5c-3bcf-4a52-8746-c8ef4b940545",
"azp" : "demo-client",
"scope" : "profile email",
"preferred_username" : "user-api"
}
署名検証に必要な情報等が
含まれる
トークンの有効期限やスコープなどが含まれる。
各項目はクレームと呼ばれる
アクセストークンの形式は任意だがKeycloakではJWSを採用
18
© Hitachi, Ltd. 2022. All rights reserved.
リフレッシュトークン
・ アクセストークンには有効期限があり、短くすることが推奨(数分、数十分)
期限が切れるたびに認可コードフローで認証や認可をしていたら不便。
・ リフレッシュトークンはアクセストークンよりも長い期限(数時間や数日など)。
アクセストークンと一緒に発行。
クライアントはリフレッシュトークンを使えばアクセストークンを再取得できる。
クライアント 認可サーバー
(Keycloak)
1. リフレッシュリクエスト
(w/リフレッシュトークン、クライアント
ID、クライアントシークレット)
3. リフレッシュレスポンス
(w/アクセストークン、リフレッシュ
トークン)
2. クライアント認証と
リフレッシュトークンの検証
トークン
エンドポイント
19
© Hitachi, Ltd. 2022. All rights reserved.
トークンの無効化
無効化の方法 誰が無効化するか
トークン無効化エンドポイントによる無効化
(RFC7009)
クライアント
アカウント管理コンソールによる無効化 リソースオーナー
管理コンソールによる無効化 管理者ユーザー
・ 有効期限内であっても、アクセストークンやリフレッシュトークンは
無効にすることができる。
(セキュリティ上の理由や、リソースオーナーがAPI連携解除したい場合)
・ Keycloakがサポートする無効化の手段
20
© Hitachi, Ltd. 2022. All rights reserved.
リソースサーバーでのアクセストークンの扱い
クライアント
(外部アプリケーション)
API呼び出し
(w/アクセストークン)
認可サーバー
(Keycloak)
2. スコープによる認可判断
リソースサーバー
(APIサーバー)
1.トークンの検証
(b) トークンイントロスペクション
1.トークンの検証
(a) ローカルでの検証
どちらか
を実施
3. 業務処理
・ ローカルでの検証(署名のチェックなど)
⇒ 無効化を即座に検知できない
・ トークンイントロスペクション
⇒ 無効化を即座に検知できる
トークンの検証などの共通処理は
APIゲートウェイで代行することもできる
21
© Hitachi, Ltd. 2022. All rights reserved.
OIDC (OpenID Connect)
OAuth2.0を拡張した「認証」のためのプロトコル。用語が異なったり、追加概念(IDトークン等)がある。
中身はOAuth2.0であるため、API認可にも使うことが可能。
RP
(WebアプリケーションA)
OP
(Keycloak)
6.トークンレスポンス(w/アクセストークン、
リフレッシュトークン、IDトークン)
3. ユーザー認証と同意の取得
認可エンドポイント
4. 認証レスポンス(w/認可コード)
トークンエンドポイント
1. Webアプリケーションにアクセス
5.トークンリクエスト(w/認可コード、
クライアントID・シークレット)
7.IDトークンの検証
リダイレクトURI
2. 認証リクエスト
(w/クライアントID、スコープ:openid必須、
リダイレクトURI)
ブラウザーとOPの間で
セッション確立
8.RPとブラウザーの間で
ログインセッション確立
リソースオーナー
(ブラウザー)
© Hitachi, Ltd. 2022. All rights reserved.
Contents
22
1. Keycloakとは
2. API認可の基礎
3. Keycloakの基本概念
4. API認可をKeycloakで試す
23
© Hitachi, Ltd. 2022. All rights reserved.
Keycloakの基本概念
Keycloakの設定を行うためには、特有の用語の理解が必要。
「ユーザー」「クライアント」「セッション」「ロール」「グループ」
「レルム」「クライアントアダプター」「プロトコルマッパー」
「クライアントスコープ」など
今回は、最も基本的な「クライアント」と「セッション」を紹介。
24
© Hitachi, Ltd. 2022. All rights reserved.
クライアント
• 認証・認可サーバーであるKeycloakのサービスを利用するアプリケーションのこと。
OAuthのクライアント、OIDCのRP、SAMLのSP。
• 管理コンソールの「Clients」画面より作成、管理できる。
25
© Hitachi, Ltd. 2022. All rights reserved.
セッション
 Keycloakではログインが成功するとセッションが生成され、メモリー
上で管理。
 アクセストークンやリフレッシュトークンもセッションと関連付けられ
て管理されている。セッションが無効になるとトークンも無効に。
Keycloak
セッション
②発行
セッションID
Cookie
リフレッシュトークン
アクセストークン
セッションID
セッションID
セッションID
①認証されたタイミングで生成、
セッションID採番
③確認
© Hitachi, Ltd. 2022. All rights reserved.
Contents
26
1. Keycloakとは
2. API認可の基礎
3. Keycloakの基本概念
4. API認可をKeycloakで試す
© Hitachi, Ltd. 2022. All rights reserved.
4. API認可をKeycloakで試す
27
① 検証環境を構築する
② 検証に必要な設定をする
③ 検証環境を動かしてみよう
④ トークンリフレッシュとトークン無効化を試してみる
⑤ セキュリティを向上する
© Hitachi, Ltd. 2022. All rights reserved.
4. API認可をKeycloakで試す
28
① 検証環境を構築する
② 検証に必要な設定をする
③ 検証環境を動かしてみよう
④ トークンリフレッシュとトークン無効化を試してみる
⑤ セキュリティを向上する
29
© Hitachi, Ltd. 2022. All rights reserved.
①検証環境を構築する
• 今回実現するもの → 認可コードフローでアクセストークンを取得しAPIを呼び出すための検証環境
クライアントID・
クライアントシークレット
クライアントID・
クライアントシークレット
クライアントID・
クライアントシークレット
リダイレクトURI
APIコール
サンプルクライアント
(クライアント)
認可リクエスト
Keycloak
(認可サーバー)
ユーザー認証、同意の取得
認可レスポンス
ブラウザー
(リソースオーナー)
API連携指示
認可エンドポイント
トークンリクエスト
トークンレスポンス
トークン
エンドポイント
サンプルAPIサーバー
(リソースサーバー )
リダイレクトURI
イントロスペクションリクエスト
イントロスペクション
エンドポイント イントロスペクションレスポンス
APIレスポンス
30
© Hitachi, Ltd. 2022. All rights reserved.
①検証環境を構築する
• 今回実現するもの → 認可コードフローでアクセストークンを取得しAPIを呼び出すための検証環境
• https://github.com/keycloak-book-jp から検証環境のソースコードを取得可能
ブラウザー
(リソースオーナー)
サンプルAPIサーバー
(リソースサーバー)
サンプルクライアント
(クライアント)
Keycloak
(認可サーバー)
localhost:8080
localhost:8082
localhost:8081
APIコール (w/アクセストークン)
トークンリクエスト
(w/認可コード、クライアントID、
クライアントシークレット)
API連携指示
ユーザー認証、同意の取得
© Hitachi, Ltd. 2022. All rights reserved.
4. API認可をKeycloakで試す
31
① 検証環境を構築する
② 検証に必要な設定をする
③ 検証環境を動かしてみよう
④ トークンリフレッシュとトークン無効化を試してみる
⑤ セキュリティを向上する
32
© Hitachi, Ltd. 2022. All rights reserved.
②検証に必要な設定をする
① レルムの追加
② ユーザーの追加
③ エンドポイント指定
④ クライアント作成・設定
⑤ クライアントID・
クライアントシークレット共有
⑥ エンドポイント指定
⑦ クライアント作成・設定
⑧ クライアントID・
クライアントシークレット共有
⑨ スコープ作成・設定
33
© Hitachi, Ltd. 2022. All rights reserved.
②検証に必要な設定をする
① レルムの追加
② ユーザーの追加
③ エンドポイント指定
④ クライアント作成・設定
⑤ クライアントID・
クライアントシークレット共有
⑥ エンドポイント指定
⑦ クライアント作成・設定
⑧ クライアントID・
クライアントシークレット共有
⑨ スコープ作成・設定
34
© Hitachi, Ltd. 2022. All rights reserved.
②検証に必要な設定をする
① レルムの追加
② ユーザーの追加
③ エンドポイント指定
④ クライアント作成・設定
⑤ クライアントID・
クライアントシークレット共有
⑥ エンドポイント指定
⑦ クライアント作成・設定
⑧ クライアントID・
クライアントシークレット共有
⑨ スコープ作成・設定
35
© Hitachi, Ltd. 2022. All rights reserved.
②検証に必要な設定をする
① レルムの追加
② ユーザーの追加
③ エンドポイント指定
④ クライアント作成・設定
⑤ クライアントID・
クライアントシークレット共有
⑥ エンドポイント指定
⑦ クライアント作成・設定
⑧ クライアントID・
クライアントシークレット共有
⑨ スコープ作成・設定
36
© Hitachi, Ltd. 2022. All rights reserved.
②検証に必要な設定をする
① レルムの追加
② ユーザーの追加
③ エンドポイント指定
④ クライアント作成・設定
⑤ クライアントID・
クライアントシークレット共有
⑥ エンドポイント指定
⑦ クライアント作成・設定
⑧ クライアントID・
クライアントシークレット共有
⑨ スコープ作成・設定
37
© Hitachi, Ltd. 2022. All rights reserved.
②検証に必要な設定をする
① レルムの追加
② ユーザーの追加
③ エンドポイント指定
④ クライアント作成・設定
⑤ クライアントID・
クライアントシークレット共有
⑥ エンドポイント指定
⑦ クライアント作成・設定
⑧ クライアントID・
クライアントシークレット共有
⑨ スコープ作成・設定
38
© Hitachi, Ltd. 2022. All rights reserved.
②検証に必要な設定をする
① レルムの追加
② ユーザーの追加
③ エンドポイント指定
④ クライアント作成・設定
⑤ クライアントID・
クライアントシークレット共有
⑥ エンドポイント指定
⑦ クライアント作成・設定
⑧ クライアントID・
クライアントシークレット共有
⑨ スコープ作成・設定
39
© Hitachi, Ltd. 2022. All rights reserved.
②検証に必要な設定をする
① レルムの追加
② ユーザーの追加
③ エンドポイント指定
④ クライアント作成・設定
⑤ クライアントID・
クライアントシークレット共有
⑥ エンドポイント指定
⑦ クライアント作成・設定
⑧ クライアントID・
クライアントシークレット共有
⑨ スコープ作成・設定
© Hitachi, Ltd. 2022. All rights reserved.
4. API認可をKeycloakで試す
40
① 検証環境を構築する
② 検証に必要な設定をする
③ 検証環境を動かしてみよう
④ トークンリフレッシュとトークン無効化を試してみる
⑤ セキュリティを向上する
41
© Hitachi, Ltd. 2022. All rights reserved.
③検証環境を動かしてみよう
クライアントID・
クライアントシークレット
クライアントID・
クライアントシークレット
クライアントID・
クライアントシークレット
リダイレクトURI
APIコール
サンプルクライアント
(クライアント)
認可リクエスト
Keycloak
(認可サーバー)
ユーザー認証、同意の取得
認可レスポンス
ブラウザー
(リソースオーナー)
API連携指示
認可エンドポイント
トークンリクエスト
トークンレスポンス
トークン
エンドポイント
サンプルAPIサーバー
(リソースサーバー )
リダイレクトURI
イントロスペクションリクエスト
イントロスペクション
エンドポイント イントロスペクションレスポンス
APIレスポンス
localhost:8080
localhost:8081 localhost:8082
© Hitachi, Ltd. 2022. All rights reserved.
4. API認可をKeycloakで試す
42
① 検証環境を構築する
② 検証に必要な設定をする
③ 検証環境を動かしてみよう
④ トークンリフレッシュとトークン無効化を試してみる
⑤ セキュリティを向上する
43
© Hitachi, Ltd. 2022. All rights reserved.
④トークンリフレッシュとトークン無効化を試してみる
サンプルクライアント
(クライアント)
Keycloak
(認可サーバー)
リフレッシュリクエスト
リフレッシュレスポンス
トークン
エンドポイント
localhost:8080
localhost:8081
 トークンリフレッシュ:
アクセストークンの有効期限が切れたときに、ユーザの再認証無しでアクセストークンを再取得する。
サンプルクライアント
(クライアント)
Keycloak
(認可サーバー)
無効化リクエスト
200 OK
無効化
エンドポイント
localhost:8080
localhost:8081
 トークン無効化:
アクセストークンの有効期限が切れる前に、アクセストークンを無効化する。
© Hitachi, Ltd. 2022. All rights reserved.
4. API認可をKeycloakで試す
44
① 検証環境を構築する
② 検証に必要な設定をする
③ 検証環境を動かしてみよう
④ トークンリフレッシュとトークン無効化を試してみる
⑤ セキュリティを向上する
45
© Hitachi, Ltd. 2022. All rights reserved.
⑤セキュリティを向上する ~今回はPKCEやります~
サンプルクライアント
(クライアント)
認可リクエスト
Keycloak
(認可サーバー)
ユーザー認証、同意の取得
認可レスポンス
ブラウザー
(リソースオーナー)
API連携指示
認可エンドポイント
トークンリクエスト
トークンレスポンス
トークン
エンドポイント
サンプルAPIサーバー
(リソースサーバー )
リダイレクトURI
 PKCEとは:
RFC 7636で定められたProof Key for Code Exchangeの頭文字をとったもの。
認可コード横取り攻撃を軽減する。
①クライアントは、code_verifierというランダム値を生成し、そのハッシュ値(code_challenge)を計算する。
②クライアントは、code_challengeを認可リクエストに付与する。
③クライアントは、code_verifierをトークンリクエストに付与する。
④認可サーバーは、code_verifierとcode_challengeを検証する。
①
②
③
④
46
© Hitachi, Ltd. 2022. All rights reserved.
おわりに: 参考文献
• 書籍: 認証と認可Keycloak入門
今回の内容の詳細、SSO、様々な認証
(多要素認証、外部ストレージ等)
HA構成やカスタマイズの基本までカバー
https://ric.co.jp/book/new-publication/detail/2081
https://www.amazon.co.jp/dp/4865943226/
• 書籍でカバーできてない内容について
• ThinkIT: KeycloakのFAPI 1.0対応で実現する高度なAPIセキュリティ
https://thinkit.co.jp/series/10313
Financial-grade API (FAPI)や、ベースとなっているClient Policies等を解説
• 公式ドキュメント
https://www.keycloak.org/documentation
日本語訳: https://keycloak-documentation.openstandia.jp/
47
© Hitachi, Ltd. 2022. All rights reserved.
Trademarks
• OpenID is a trademark or registered trademark of OpenID Foundation in the United States and other
countries.
• GitHub is a trademark or registered trademark of GitHub, Inc. in the United States and other
countries.
• Other brand names and product names used in this material are trademarks, registered trademarks,
or trade names of their respective holders.
KeycloakでAPI認可に入門する

Mais conteúdo relacionado

Mais procurados

3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService PrincipalToru Makabe
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーToru Makabe
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAkihiro Kuwano
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線Motonori Shindo
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)NTT DATA Technology & Innovation
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)NTT DATA Technology & Innovation
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話Yoshinori Matsunobu
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話Yuta Shimada
 

Mais procurados (20)

3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
Spring Cloud Data Flow の紹介 #streamctjp
Spring Cloud Data Flow の紹介  #streamctjpSpring Cloud Data Flow の紹介  #streamctjp
Spring Cloud Data Flow の紹介 #streamctjp
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Keycloakのステップアップ認証について
Keycloakのステップアップ認証についてKeycloakのステップアップ認証について
Keycloakのステップアップ認証について
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
Serverless時代のJavaについて
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについて
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
 

Semelhante a KeycloakでAPI認可に入門する

Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
 
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #apiTatsuo Kudo
 
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護Naohiro Fujie
 
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューションOAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューションTatsuo Kudo
 
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...Tatsuo Kudo
 
Kong meetup tokyo 2018.10.26 ブリスコラ
Kong meetup tokyo 2018.10.26 ブリスコラKong meetup tokyo 2018.10.26 ブリスコラ
Kong meetup tokyo 2018.10.26 ブリスコラbriscola-tokyo
 
OAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティOAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティHiroshi Hayakawa
 
100121 Scis2010 Itoh
100121 Scis2010 Itoh100121 Scis2010 Itoh
100121 Scis2010 ItohHiroki Itoh
 
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...FinTechLabs.io
 
Azure AD による Web API の 保護
Azure AD による Web API の 保護 Azure AD による Web API の 保護
Azure AD による Web API の 保護 junichi anno
 
Kongの概要と導入事例
Kongの概要と導入事例Kongの概要と導入事例
Kongの概要と導入事例briscola-tokyo
 
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可Hitachi, Ltd. OSS Solution Center.
 
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細オラクルエンジニア通信
 
Spring Cloud Gateway on Kubernetes
Spring Cloud Gateway on KubernetesSpring Cloud Gateway on Kubernetes
Spring Cloud Gateway on KubernetesTakeshi Ogawa
 
Azure Active Directory 利用開始への第一歩
Azure Active Directory 利用開始への第一歩Azure Active Directory 利用開始への第一歩
Azure Active Directory 利用開始への第一歩Yusuke Kodama
 

Semelhante a KeycloakでAPI認可に入門する (20)

Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
 
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
 
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護
 
NGINXでの認可について考える
NGINXでの認可について考えるNGINXでの認可について考える
NGINXでの認可について考える
 
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューションOAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
 
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
 
Kong meetup tokyo 2018.10.26 ブリスコラ
Kong meetup tokyo 2018.10.26 ブリスコラKong meetup tokyo 2018.10.26 ブリスコラ
Kong meetup tokyo 2018.10.26 ブリスコラ
 
OAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティOAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティ
 
100121 Scis2010 Itoh
100121 Scis2010 Itoh100121 Scis2010 Itoh
100121 Scis2010 Itoh
 
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
 
Gaeja20121130
Gaeja20121130Gaeja20121130
Gaeja20121130
 
Azure AD による Web API の 保護
Azure AD による Web API の 保護 Azure AD による Web API の 保護
Azure AD による Web API の 保護
 
Kongの概要と導入事例
Kongの概要と導入事例Kongの概要と導入事例
Kongの概要と導入事例
 
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
 
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
 
How FIDO Works
How FIDO WorksHow FIDO Works
How FIDO Works
 
Spring Cloud Gateway on Kubernetes
Spring Cloud Gateway on KubernetesSpring Cloud Gateway on Kubernetes
Spring Cloud Gateway on Kubernetes
 
CSS2020 Client Policies on keycloak
CSS2020 Client Policies on keycloak CSS2020 Client Policies on keycloak
CSS2020 Client Policies on keycloak
 
Azure Active Directory 利用開始への第一歩
Azure Active Directory 利用開始への第一歩Azure Active Directory 利用開始への第一歩
Azure Active Directory 利用開始への第一歩
 
OCHaCafe#5 - 避けては通れない!認証・認可
OCHaCafe#5 - 避けては通れない!認証・認可OCHaCafe#5 - 避けては通れない!認証・認可
OCHaCafe#5 - 避けては通れない!認証・認可
 

Mais de Hitachi, Ltd. OSS Solution Center.

Guide of authentication and authorization for cloud native applications with ...
Guide of authentication and authorization for cloud native applications with ...Guide of authentication and authorization for cloud native applications with ...
Guide of authentication and authorization for cloud native applications with ...Hitachi, Ltd. OSS Solution Center.
 
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩みKeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩みHitachi, Ltd. OSS Solution Center.
 
KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization wit...
KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization wit...KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization wit...
KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization wit...Hitachi, Ltd. OSS Solution Center.
 
Challenge to Implementing "Scalable" Authorization with Keycloak
Challenge to Implementing "Scalable" Authorization with KeycloakChallenge to Implementing "Scalable" Authorization with Keycloak
Challenge to Implementing "Scalable" Authorization with KeycloakHitachi, Ltd. OSS Solution Center.
 
Why Assertion-based Access Token is preferred to Handle-based one?
Why Assertion-based Access Token is preferred to Handle-based one?Why Assertion-based Access Token is preferred to Handle-based one?
Why Assertion-based Access Token is preferred to Handle-based one?Hitachi, Ltd. OSS Solution Center.
 
What API Specifications and Tools Help Engineers to Construct a High-Security...
What API Specifications and Tools Help Engineers to Construct a High-Security...What API Specifications and Tools Help Engineers to Construct a High-Security...
What API Specifications and Tools Help Engineers to Construct a High-Security...Hitachi, Ltd. OSS Solution Center.
 
Implementing security and availability requirements for banking API system us...
Implementing security and availability requirements for banking API system us...Implementing security and availability requirements for banking API system us...
Implementing security and availability requirements for banking API system us...Hitachi, Ltd. OSS Solution Center.
 
Lightweight Zero-trust Network Implementation and Transition with Keycloak an...
Lightweight Zero-trust Network Implementation and Transition with Keycloak an...Lightweight Zero-trust Network Implementation and Transition with Keycloak an...
Lightweight Zero-trust Network Implementation and Transition with Keycloak an...Hitachi, Ltd. OSS Solution Center.
 
Overall pictures of Identity provider mix-up attack patterns and trade-offs b...
Overall pictures of Identity provider mix-up attack patterns and trade-offs b...Overall pictures of Identity provider mix-up attack patterns and trade-offs b...
Overall pictures of Identity provider mix-up attack patterns and trade-offs b...Hitachi, Ltd. OSS Solution Center.
 
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~Hitachi, Ltd. OSS Solution Center.
 
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現Hitachi, Ltd. OSS Solution Center.
 

Mais de Hitachi, Ltd. OSS Solution Center. (20)

Guide of authentication and authorization for cloud native applications with ...
Guide of authentication and authorization for cloud native applications with ...Guide of authentication and authorization for cloud native applications with ...
Guide of authentication and authorization for cloud native applications with ...
 
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩みKeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
 
KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization wit...
KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization wit...KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization wit...
KubeCon NA 2023 Recap: Challenge to Implementing “Scalable” Authorization wit...
 
Challenge to Implementing "Scalable" Authorization with Keycloak
Challenge to Implementing "Scalable" Authorization with KeycloakChallenge to Implementing "Scalable" Authorization with Keycloak
Challenge to Implementing "Scalable" Authorization with Keycloak
 
KubeConRecap_nakamura.pdf
KubeConRecap_nakamura.pdfKubeConRecap_nakamura.pdf
KubeConRecap_nakamura.pdf
 
Security Considerations for API Gateway Aggregation
Security Considerations for API Gateway AggregationSecurity Considerations for API Gateway Aggregation
Security Considerations for API Gateway Aggregation
 
IDガバナンス&管理の基礎
IDガバナンス&管理の基礎IDガバナンス&管理の基礎
IDガバナンス&管理の基礎
 
Why Assertion-based Access Token is preferred to Handle-based one?
Why Assertion-based Access Token is preferred to Handle-based one?Why Assertion-based Access Token is preferred to Handle-based one?
Why Assertion-based Access Token is preferred to Handle-based one?
 
What API Specifications and Tools Help Engineers to Construct a High-Security...
What API Specifications and Tools Help Engineers to Construct a High-Security...What API Specifications and Tools Help Engineers to Construct a High-Security...
What API Specifications and Tools Help Engineers to Construct a High-Security...
 
Implementing security and availability requirements for banking API system us...
Implementing security and availability requirements for banking API system us...Implementing security and availability requirements for banking API system us...
Implementing security and availability requirements for banking API system us...
 
Lightweight Zero-trust Network Implementation and Transition with Keycloak an...
Lightweight Zero-trust Network Implementation and Transition with Keycloak an...Lightweight Zero-trust Network Implementation and Transition with Keycloak an...
Lightweight Zero-trust Network Implementation and Transition with Keycloak an...
 
Overall pictures of Identity provider mix-up attack patterns and trade-offs b...
Overall pictures of Identity provider mix-up attack patterns and trade-offs b...Overall pictures of Identity provider mix-up attack patterns and trade-offs b...
Overall pictures of Identity provider mix-up attack patterns and trade-offs b...
 
Apache con@home 2021_sha
Apache con@home 2021_shaApache con@home 2021_sha
Apache con@home 2021_sha
 
Node-RED Installer, Standalone Installer using Electron
Node-RED Installer, Standalone Installer using ElectronNode-RED Installer, Standalone Installer using Electron
Node-RED Installer, Standalone Installer using Electron
 
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Hacktoberfest 概要、Node-REDプロジェクト貢献手順Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
 
Node-RED v2.0新機能紹介
Node-RED v2.0新機能紹介Node-RED v2.0新機能紹介
Node-RED v2.0新機能紹介
 
Node-REDからREST APIに接続
Node-REDからREST APIに接続Node-REDからREST APIに接続
Node-REDからREST APIに接続
 
Node-RED v1.3新機能紹介
Node-RED v1.3新機能紹介Node-RED v1.3新機能紹介
Node-RED v1.3新機能紹介
 
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
 
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
CloudNative Days Spring 2021 Online: Apache CamelおよびKeycloakを用いたAPI管理基盤の実現
 

Último

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Último (8)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

KeycloakでAPI認可に入門する

  • 1. © Hitachi, Ltd. 2022. All rights reserved. KeycloakでAPI認可に入門する OSSセキュリティ技術の会第10回勉強会 【オンライン】 2022/02/09 日立製作所 OSSソリューションセンタ 中村 雄一 田畑 義之
  • 2. © Hitachi, Ltd. 2022. All rights reserved. Contents 1 1. Keycloakとは 2. API認可の基礎 3. Keycloakの基本概念 4. API認可をKeycloakで試す
  • 3. 2 © Hitachi, Ltd. 2022. All rights reserved. Webベースのシステム Webアプリ ケーション Webシステム ブラウザー ネイティブ アプリ REST API ユーザー 他システム HTTPリクエスト HTML画面 HTTPリクエスト(REST) 処理結果 マイクロサービス サービス サービス サービス HTTPリクエスト(REST) 処理結果
  • 4. 3 © Hitachi, Ltd. 2022. All rights reserved. 認証と認可 ユーザー クレデンシャルを提示 (ユーザー名とパスワード等) システム (インターネットバンキング) Webアプリケーション (銀行Web) REST API (残高照会 API) 外部アプリケーション (家計簿アプリ) 残高照会メニュー操作 残高照会API呼び出し 家計簿アプリに 残高照会を認可 残高情報 ①認証 誰かを確認 ②認可 アクセス権を与える ③認可判断 権限の確認
  • 5. 4 © Hitachi, Ltd. 2022. All rights reserved. Keycloakとは • OSSの「IAM(Identity and Access Management)」のソフトウェア https://www.keycloak.org/ • コミュニティが活発・オープンで、商用利用も広く進んでいる 日本人のメンテナも!(乗松さん@日立) • 最新標準にも対応。v15.0では、OpenID FoundationのFAPI, FAPI-CIBA, Open Banking Brasil FAPIという仕様にも正式対応。 https://openid.net/certification/ • 豊富な機能 分類 機能 概要 認証 認証情報管理 認証に必要なユーザ名・属性情報を管理 パスワード認証 ユーザ名・パスワードに基づき認証 多要素認証 OTP(FreeOTPベース)や、WebAuthnに基づいた多要素認証を提供 外部連携 外部の認証情報と連携して認証する 認可 権限管理 ユーザやアプリに紐づく権限を管理 認可サービス 権限とリソースの紐づけを管理し、認可判断を実行する 認証・認可連携 プロトコル OAuth 2.0 認可サーバ APIの認可サーバとして必要なエンドポイントを提供(認可エンドポイ ント、トークンエンドポイント、トークン失効エンドポイント等) OpenID Connect OP OpenID ConnectのOPサーバとしての機能を提供 SAML IdP SAMLのIdPサーバとしての機能を提供 カスタマイズ ポイント SPI 様々な拡張を作りこむためのJavaのインタフェース クライアントポリシー クライアント毎に異なった振る舞いをKeycloakに持たせるための拡張 フレームワーク アプリ用 ライブラリ クライアントアダプタ アプリにOpenID Connect RP,SAML SPの機能を持たせたり、認可 サービスのクライアント機能を持たせるアプリ用ライブラリ
  • 6. 5 © Hitachi, Ltd. 2022. All rights reserved. Keycloakでできること Webアプリ A Webアプリ B Webアプリ C システム Keycloak 認証 処理 認可 処理 REST API 群 認証や 認可の 委譲 外部の クレデンシャル ソーシャル サイトの認証 Keycloak内の クレデンシャル ユースケース① OAuth2.0の枠組みに 適切に従った「API認可」 ユースケース② クレデンシャルの入力は 一度だけ「SSO」 ユースケース③ 外部のクレデンシャルや 認証システムとの連携 連 携
  • 7. 6 © Hitachi, Ltd. 2022. All rights reserved. Keycloakの構成 Keycloak JDK Wildfly [アプリケーションサーバー] JDBC ドライバー OS RDB この単位のzipファイルが配布 Keycloakの設定情報を格納。 デフォルトではH2という DBが配布物に含まれている。 本番用途では外部DBが推奨 Quarkusという軽量なアプリケーションサーバ で動くものも開発中
  • 8. 7 © Hitachi, Ltd. 2022. All rights reserved. Keycloakのインストール ・ 公式サイトよりzipまたはtar.gzをダウンロード。 書籍で使っているバージョンは15.0.2。本勉強会時点の最新版は16.1.0 ・ 前提環境: Java(JDK 8以上)。最低でも512MのRAMと1Gのディスク容量 ・ インストール&起動 (Windowsの場合) zipを展開し、コマンドプロンプトで展開したディレクトリに移動し、 .binstandalone.bat とするだけ。
  • 9. 8 © Hitachi, Ltd. 2022. All rights reserved. 管理者ユーザーを作成 ウェルカムページ(http://localhost:8080/)をブラウザで開き、管理者ユーザーを作成 ユーザー名とパスワードを入力し 管理者ユーザーを作成
  • 10. 9 © Hitachi, Ltd. 2022. All rights reserved. 管理コンソールにログイン ・ Keycloakの設定は管理コンソールから行う。 ・ ウェルカムページから「Administration Console」を選択し、管理者ユーザーでログイン
  • 11. 10 © Hitachi, Ltd. 2022. All rights reserved. レルム作成: レルムとは 「レルム」とはKeycloak の管理単位のことで、ユーザーなどの情報はレルム単位で管理。 「master」レルムは、すべてのレルムを管理できる特別なレルム(先ほどは「master」レルム) 任意にレルムを作成して管理ができ(部署単位、用途単位等)、マルチテナントのような使い方もできる。 Keycloakサーバー master レルム department A レルム department B レルム クライアント ユーザー レルムの設定 グループ セッション ロール 管理者ユーザー クライアント ユーザー レルムの設定 グループ セッション ロール …
  • 12. 11 © Hitachi, Ltd. 2022. All rights reserved. レルムの作成 API認可の動作確認用に、「demo-api」レルムを作成
  • 13. 12 © Hitachi, Ltd. 2022. All rights reserved. レルムを確認
  • 14. © Hitachi, Ltd. 2022. All rights reserved. Contents 13 1. Keycloakとは 2. API認可の基礎 3. Keycloakの基本概念 4. API認可をKeycloakで試す
  • 15. 14 © Hitachi, Ltd. 2022. All rights reserved. API認可とは ・ API 認可: API 呼び出しを行う際の認可 ・ API認可では、「OAuth 2.0」が広く使われている。 ・ OAuth 2.0 (以下OAuth) ユーザーのリソース(protected resource)へのアクセスを 外部アプリケーション(3rd party application)に認可するためのプロトコル RFC6749で規定
  • 16. 15 © Hitachi, Ltd. 2022. All rights reserved. OAuthの登場人物とAPI認可 認可サーバー (Keycloak) クライアント (家計簿アプリ) リソースサーバー (X銀行残高照会API) アクセスへの 同意 API呼び出し (w/ アクセストークン) アクセストークン発行 (read_balanceスコープ付き) リソースオーナー (ブラウザー) ① リソースオーナーが 家計簿アプリに残高情報へのア クセス権を認可 ② 認可された証拠となる トークンを発行 ③ トークンの提示 リソース (残高情報) ④ トークンをもとに 認可判断 ★アクセストークン: API を呼び出すときに使う「認可された証拠」 リソースアクセスがクライアントに認可されたかを示す 「スコープ(scope)」が関連付けられている。 OAuthではアクセストークン発行のためのフローをいくつか規定
  • 17. 16 © Hitachi, Ltd. 2022. All rights reserved. OAuthの典型的なフロー : 認可コードフロー クライアント (例:家計簿アプリ) 2. 認可リクエスト (w/クライアントID、スコープ、 リダイレクトURI) 認可サーバー (Keycloak) 3. ユーザー認証、4. 同意の取得 5. 認可レスポンス (w/認可コード) リソースオーナー (ブラウザー) 1. API連携指示 6. トークンリクエスト (w/認可コード、クライアントID、 クライアントシークレット) 8. トークンレスポンス (w/アクセストークン、 リフレッシュトークン) クライアントID・シークレット リダイレクトURI リソースサーバー (例:X銀行残高照会API) 9. API呼び出し (w/アクセストークン) 事前に認可サーバーが発行 認可サーバに事前登録 Keycloakでは Valid Redirect URIsに登録 家計簿メニュー 残高更新 7. クライアント認証と 認可コード・リダイレクトURIの確認 Keycloakの場合: ブラウザとKeycloakの間に セッション確立 認可エンドポイント リダイレクトURI。 クライアントに実装 トークン エンドポイント X銀行ログイン ID pass 家計簿アプリが 以下のアクセス を求めています 残高照会 許可する X銀行残高連携 家計簿メニュー
  • 18. 17 © Hitachi, Ltd. 2022. All rights reserved. Keycloakにおけるアクセストークン eyJhbGc<略> NmxRIn0. eyJleHA<略>JteRq5n.eyJhbOi<略>7JqzJwbg ヘッダー (Base64URLエンコード) ペイロード(JWT) (Base64URLエンコード) 署名 (Base64URLエンコード) { "alg": "RS256", "typ": "JWT", "kid":"SPeVQvHYuixD2g- vgNvnaZdBFHqmP25N_t5o2Ly 5Es" } { "exp" : 1634452276, "iat" : 1634451676, "auth_time" : 1634450659, "iss" : "https://api.example.com/auth/realms/demo", "aud" : "account", "sub" : "e7565c5c-3bcf-4a52-8746-c8ef4b940545", "azp" : "demo-client", "scope" : "profile email", "preferred_username" : "user-api" } 署名検証に必要な情報等が 含まれる トークンの有効期限やスコープなどが含まれる。 各項目はクレームと呼ばれる アクセストークンの形式は任意だがKeycloakではJWSを採用
  • 19. 18 © Hitachi, Ltd. 2022. All rights reserved. リフレッシュトークン ・ アクセストークンには有効期限があり、短くすることが推奨(数分、数十分) 期限が切れるたびに認可コードフローで認証や認可をしていたら不便。 ・ リフレッシュトークンはアクセストークンよりも長い期限(数時間や数日など)。 アクセストークンと一緒に発行。 クライアントはリフレッシュトークンを使えばアクセストークンを再取得できる。 クライアント 認可サーバー (Keycloak) 1. リフレッシュリクエスト (w/リフレッシュトークン、クライアント ID、クライアントシークレット) 3. リフレッシュレスポンス (w/アクセストークン、リフレッシュ トークン) 2. クライアント認証と リフレッシュトークンの検証 トークン エンドポイント
  • 20. 19 © Hitachi, Ltd. 2022. All rights reserved. トークンの無効化 無効化の方法 誰が無効化するか トークン無効化エンドポイントによる無効化 (RFC7009) クライアント アカウント管理コンソールによる無効化 リソースオーナー 管理コンソールによる無効化 管理者ユーザー ・ 有効期限内であっても、アクセストークンやリフレッシュトークンは 無効にすることができる。 (セキュリティ上の理由や、リソースオーナーがAPI連携解除したい場合) ・ Keycloakがサポートする無効化の手段
  • 21. 20 © Hitachi, Ltd. 2022. All rights reserved. リソースサーバーでのアクセストークンの扱い クライアント (外部アプリケーション) API呼び出し (w/アクセストークン) 認可サーバー (Keycloak) 2. スコープによる認可判断 リソースサーバー (APIサーバー) 1.トークンの検証 (b) トークンイントロスペクション 1.トークンの検証 (a) ローカルでの検証 どちらか を実施 3. 業務処理 ・ ローカルでの検証(署名のチェックなど) ⇒ 無効化を即座に検知できない ・ トークンイントロスペクション ⇒ 無効化を即座に検知できる トークンの検証などの共通処理は APIゲートウェイで代行することもできる
  • 22. 21 © Hitachi, Ltd. 2022. All rights reserved. OIDC (OpenID Connect) OAuth2.0を拡張した「認証」のためのプロトコル。用語が異なったり、追加概念(IDトークン等)がある。 中身はOAuth2.0であるため、API認可にも使うことが可能。 RP (WebアプリケーションA) OP (Keycloak) 6.トークンレスポンス(w/アクセストークン、 リフレッシュトークン、IDトークン) 3. ユーザー認証と同意の取得 認可エンドポイント 4. 認証レスポンス(w/認可コード) トークンエンドポイント 1. Webアプリケーションにアクセス 5.トークンリクエスト(w/認可コード、 クライアントID・シークレット) 7.IDトークンの検証 リダイレクトURI 2. 認証リクエスト (w/クライアントID、スコープ:openid必須、 リダイレクトURI) ブラウザーとOPの間で セッション確立 8.RPとブラウザーの間で ログインセッション確立 リソースオーナー (ブラウザー)
  • 23. © Hitachi, Ltd. 2022. All rights reserved. Contents 22 1. Keycloakとは 2. API認可の基礎 3. Keycloakの基本概念 4. API認可をKeycloakで試す
  • 24. 23 © Hitachi, Ltd. 2022. All rights reserved. Keycloakの基本概念 Keycloakの設定を行うためには、特有の用語の理解が必要。 「ユーザー」「クライアント」「セッション」「ロール」「グループ」 「レルム」「クライアントアダプター」「プロトコルマッパー」 「クライアントスコープ」など 今回は、最も基本的な「クライアント」と「セッション」を紹介。
  • 25. 24 © Hitachi, Ltd. 2022. All rights reserved. クライアント • 認証・認可サーバーであるKeycloakのサービスを利用するアプリケーションのこと。 OAuthのクライアント、OIDCのRP、SAMLのSP。 • 管理コンソールの「Clients」画面より作成、管理できる。
  • 26. 25 © Hitachi, Ltd. 2022. All rights reserved. セッション  Keycloakではログインが成功するとセッションが生成され、メモリー 上で管理。  アクセストークンやリフレッシュトークンもセッションと関連付けられ て管理されている。セッションが無効になるとトークンも無効に。 Keycloak セッション ②発行 セッションID Cookie リフレッシュトークン アクセストークン セッションID セッションID セッションID ①認証されたタイミングで生成、 セッションID採番 ③確認
  • 27. © Hitachi, Ltd. 2022. All rights reserved. Contents 26 1. Keycloakとは 2. API認可の基礎 3. Keycloakの基本概念 4. API認可をKeycloakで試す
  • 28. © Hitachi, Ltd. 2022. All rights reserved. 4. API認可をKeycloakで試す 27 ① 検証環境を構築する ② 検証に必要な設定をする ③ 検証環境を動かしてみよう ④ トークンリフレッシュとトークン無効化を試してみる ⑤ セキュリティを向上する
  • 29. © Hitachi, Ltd. 2022. All rights reserved. 4. API認可をKeycloakで試す 28 ① 検証環境を構築する ② 検証に必要な設定をする ③ 検証環境を動かしてみよう ④ トークンリフレッシュとトークン無効化を試してみる ⑤ セキュリティを向上する
  • 30. 29 © Hitachi, Ltd. 2022. All rights reserved. ①検証環境を構築する • 今回実現するもの → 認可コードフローでアクセストークンを取得しAPIを呼び出すための検証環境 クライアントID・ クライアントシークレット クライアントID・ クライアントシークレット クライアントID・ クライアントシークレット リダイレクトURI APIコール サンプルクライアント (クライアント) 認可リクエスト Keycloak (認可サーバー) ユーザー認証、同意の取得 認可レスポンス ブラウザー (リソースオーナー) API連携指示 認可エンドポイント トークンリクエスト トークンレスポンス トークン エンドポイント サンプルAPIサーバー (リソースサーバー ) リダイレクトURI イントロスペクションリクエスト イントロスペクション エンドポイント イントロスペクションレスポンス APIレスポンス
  • 31. 30 © Hitachi, Ltd. 2022. All rights reserved. ①検証環境を構築する • 今回実現するもの → 認可コードフローでアクセストークンを取得しAPIを呼び出すための検証環境 • https://github.com/keycloak-book-jp から検証環境のソースコードを取得可能 ブラウザー (リソースオーナー) サンプルAPIサーバー (リソースサーバー) サンプルクライアント (クライアント) Keycloak (認可サーバー) localhost:8080 localhost:8082 localhost:8081 APIコール (w/アクセストークン) トークンリクエスト (w/認可コード、クライアントID、 クライアントシークレット) API連携指示 ユーザー認証、同意の取得
  • 32. © Hitachi, Ltd. 2022. All rights reserved. 4. API認可をKeycloakで試す 31 ① 検証環境を構築する ② 検証に必要な設定をする ③ 検証環境を動かしてみよう ④ トークンリフレッシュとトークン無効化を試してみる ⑤ セキュリティを向上する
  • 33. 32 © Hitachi, Ltd. 2022. All rights reserved. ②検証に必要な設定をする ① レルムの追加 ② ユーザーの追加 ③ エンドポイント指定 ④ クライアント作成・設定 ⑤ クライアントID・ クライアントシークレット共有 ⑥ エンドポイント指定 ⑦ クライアント作成・設定 ⑧ クライアントID・ クライアントシークレット共有 ⑨ スコープ作成・設定
  • 34. 33 © Hitachi, Ltd. 2022. All rights reserved. ②検証に必要な設定をする ① レルムの追加 ② ユーザーの追加 ③ エンドポイント指定 ④ クライアント作成・設定 ⑤ クライアントID・ クライアントシークレット共有 ⑥ エンドポイント指定 ⑦ クライアント作成・設定 ⑧ クライアントID・ クライアントシークレット共有 ⑨ スコープ作成・設定
  • 35. 34 © Hitachi, Ltd. 2022. All rights reserved. ②検証に必要な設定をする ① レルムの追加 ② ユーザーの追加 ③ エンドポイント指定 ④ クライアント作成・設定 ⑤ クライアントID・ クライアントシークレット共有 ⑥ エンドポイント指定 ⑦ クライアント作成・設定 ⑧ クライアントID・ クライアントシークレット共有 ⑨ スコープ作成・設定
  • 36. 35 © Hitachi, Ltd. 2022. All rights reserved. ②検証に必要な設定をする ① レルムの追加 ② ユーザーの追加 ③ エンドポイント指定 ④ クライアント作成・設定 ⑤ クライアントID・ クライアントシークレット共有 ⑥ エンドポイント指定 ⑦ クライアント作成・設定 ⑧ クライアントID・ クライアントシークレット共有 ⑨ スコープ作成・設定
  • 37. 36 © Hitachi, Ltd. 2022. All rights reserved. ②検証に必要な設定をする ① レルムの追加 ② ユーザーの追加 ③ エンドポイント指定 ④ クライアント作成・設定 ⑤ クライアントID・ クライアントシークレット共有 ⑥ エンドポイント指定 ⑦ クライアント作成・設定 ⑧ クライアントID・ クライアントシークレット共有 ⑨ スコープ作成・設定
  • 38. 37 © Hitachi, Ltd. 2022. All rights reserved. ②検証に必要な設定をする ① レルムの追加 ② ユーザーの追加 ③ エンドポイント指定 ④ クライアント作成・設定 ⑤ クライアントID・ クライアントシークレット共有 ⑥ エンドポイント指定 ⑦ クライアント作成・設定 ⑧ クライアントID・ クライアントシークレット共有 ⑨ スコープ作成・設定
  • 39. 38 © Hitachi, Ltd. 2022. All rights reserved. ②検証に必要な設定をする ① レルムの追加 ② ユーザーの追加 ③ エンドポイント指定 ④ クライアント作成・設定 ⑤ クライアントID・ クライアントシークレット共有 ⑥ エンドポイント指定 ⑦ クライアント作成・設定 ⑧ クライアントID・ クライアントシークレット共有 ⑨ スコープ作成・設定
  • 40. 39 © Hitachi, Ltd. 2022. All rights reserved. ②検証に必要な設定をする ① レルムの追加 ② ユーザーの追加 ③ エンドポイント指定 ④ クライアント作成・設定 ⑤ クライアントID・ クライアントシークレット共有 ⑥ エンドポイント指定 ⑦ クライアント作成・設定 ⑧ クライアントID・ クライアントシークレット共有 ⑨ スコープ作成・設定
  • 41. © Hitachi, Ltd. 2022. All rights reserved. 4. API認可をKeycloakで試す 40 ① 検証環境を構築する ② 検証に必要な設定をする ③ 検証環境を動かしてみよう ④ トークンリフレッシュとトークン無効化を試してみる ⑤ セキュリティを向上する
  • 42. 41 © Hitachi, Ltd. 2022. All rights reserved. ③検証環境を動かしてみよう クライアントID・ クライアントシークレット クライアントID・ クライアントシークレット クライアントID・ クライアントシークレット リダイレクトURI APIコール サンプルクライアント (クライアント) 認可リクエスト Keycloak (認可サーバー) ユーザー認証、同意の取得 認可レスポンス ブラウザー (リソースオーナー) API連携指示 認可エンドポイント トークンリクエスト トークンレスポンス トークン エンドポイント サンプルAPIサーバー (リソースサーバー ) リダイレクトURI イントロスペクションリクエスト イントロスペクション エンドポイント イントロスペクションレスポンス APIレスポンス localhost:8080 localhost:8081 localhost:8082
  • 43. © Hitachi, Ltd. 2022. All rights reserved. 4. API認可をKeycloakで試す 42 ① 検証環境を構築する ② 検証に必要な設定をする ③ 検証環境を動かしてみよう ④ トークンリフレッシュとトークン無効化を試してみる ⑤ セキュリティを向上する
  • 44. 43 © Hitachi, Ltd. 2022. All rights reserved. ④トークンリフレッシュとトークン無効化を試してみる サンプルクライアント (クライアント) Keycloak (認可サーバー) リフレッシュリクエスト リフレッシュレスポンス トークン エンドポイント localhost:8080 localhost:8081  トークンリフレッシュ: アクセストークンの有効期限が切れたときに、ユーザの再認証無しでアクセストークンを再取得する。 サンプルクライアント (クライアント) Keycloak (認可サーバー) 無効化リクエスト 200 OK 無効化 エンドポイント localhost:8080 localhost:8081  トークン無効化: アクセストークンの有効期限が切れる前に、アクセストークンを無効化する。
  • 45. © Hitachi, Ltd. 2022. All rights reserved. 4. API認可をKeycloakで試す 44 ① 検証環境を構築する ② 検証に必要な設定をする ③ 検証環境を動かしてみよう ④ トークンリフレッシュとトークン無効化を試してみる ⑤ セキュリティを向上する
  • 46. 45 © Hitachi, Ltd. 2022. All rights reserved. ⑤セキュリティを向上する ~今回はPKCEやります~ サンプルクライアント (クライアント) 認可リクエスト Keycloak (認可サーバー) ユーザー認証、同意の取得 認可レスポンス ブラウザー (リソースオーナー) API連携指示 認可エンドポイント トークンリクエスト トークンレスポンス トークン エンドポイント サンプルAPIサーバー (リソースサーバー ) リダイレクトURI  PKCEとは: RFC 7636で定められたProof Key for Code Exchangeの頭文字をとったもの。 認可コード横取り攻撃を軽減する。 ①クライアントは、code_verifierというランダム値を生成し、そのハッシュ値(code_challenge)を計算する。 ②クライアントは、code_challengeを認可リクエストに付与する。 ③クライアントは、code_verifierをトークンリクエストに付与する。 ④認可サーバーは、code_verifierとcode_challengeを検証する。 ① ② ③ ④
  • 47. 46 © Hitachi, Ltd. 2022. All rights reserved. おわりに: 参考文献 • 書籍: 認証と認可Keycloak入門 今回の内容の詳細、SSO、様々な認証 (多要素認証、外部ストレージ等) HA構成やカスタマイズの基本までカバー https://ric.co.jp/book/new-publication/detail/2081 https://www.amazon.co.jp/dp/4865943226/ • 書籍でカバーできてない内容について • ThinkIT: KeycloakのFAPI 1.0対応で実現する高度なAPIセキュリティ https://thinkit.co.jp/series/10313 Financial-grade API (FAPI)や、ベースとなっているClient Policies等を解説 • 公式ドキュメント https://www.keycloak.org/documentation 日本語訳: https://keycloak-documentation.openstandia.jp/
  • 48. 47 © Hitachi, Ltd. 2022. All rights reserved. Trademarks • OpenID is a trademark or registered trademark of OpenID Foundation in the United States and other countries. • GitHub is a trademark or registered trademark of GitHub, Inc. in the United States and other countries. • Other brand names and product names used in this material are trademarks, registered trademarks, or trade names of their respective holders.