©Hitachi, Ltd. 2025. All rights reserved
スクエアfreeセミナー第167回
API認可を支えるKeycloakの基本と設計の考え方
~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Prepared by
田畑 義之
Hitachi OSPO
Date
June 26, 2025
©Hitachi, Ltd. 2025. All rights reserved
2
1 認証と認可およびKeycloakの概要
2 OAuthとOIDCの基礎知識
3 デモ
Agenda
©Hitachi, Ltd. 2025. All rights reserved
Welcome – about speaker
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
3
田畑 義之
シニアOSSコンサルタント
Hitachi OSPO
➢ CNCF TAG Security and ComplianceのTech Lead
➢ CNCF Ambassador / Cloud Native Community Japan
organizer / Cloud Native Security Japan founder
➢ LinkedIn: @ytabata, X: @yo_tabata,
GitHub: @y-tabata
• IDアクセス管理(IAM)とAPI分野のコンサルタント
➢APIおよび認証・認可プラットフォーム構築の上流工程等。
• コミュニティ貢献
➢CNCF TAG Security への貢献(ホワイトペーパー執筆など)。
➢Keycloak(IAMのOSS)などのOSSの開発。
• その他の活動
➢KubeCon、Apidays、Open Source Summit
などのイベントでの講演。
➢KeycloakやIAMに関する書籍や記事の執筆。
➢日本でCNCF関連ミートアップの主催。
©Hitachi, Ltd. 2025. All rights reserved
4
1 認証と認可およびKeycloakの概要
2 OAuthとOIDCの基礎知識
3 デモ
Agenda
©Hitachi, Ltd. 2025. All rights reserved
5
認証と認可とは
認証と認可およびKeycloakの概要
システムがユーザーに応じた適切な処理を行うためには、認証(Authentication)と認可(Authorization)が必
須です。
©Hitachi, Ltd. 2025. All rights reserved
6
Keycloakとは
認証と認可およびKeycloakの概要
主な機能
⚫ 標準仕様のサポート。 ex. OAuth 2.0, OpenID
Connect 1.0, SAML v2, …
⚫ SNSアカウントを使ったログイン。 ex. GitHub, X,
Facebook, …
⚫ 既存ユーザストアとの連携。 ex. LDAP, Active
Directory, …
• IAM (IDアクセス管理) のOSS。
• OAuth2認可サーバの機能とシングルサインオン (SSO) の機能を有する。
• CNCF Incubatingプロジェクト。
標準仕様のサポート
Keycloak
LDAP
Active
Directory
RDB
OpenID Connect 1.0
SAML v2
GitHub
X
Facebook
ID管理
ソーシャルログイン
OAuth 2.0
©Hitachi, Ltd. 2025. All rights reserved
7
Keycloakの主要なユースケース
認証と認可およびKeycloakの概要
Keycloakには主に、①API認可、②SSO(シングルサインオン)、③さまざまな認証、の3つのユースケースがあります。
前半の本セッションでは①のAPI認可のユースケースを詳しく取り上げます。
©Hitachi, Ltd. 2025. All rights reserved
8
1 認証と認可およびKeycloakの概要
2 OAuthとOIDCの基礎知識
3 デモ
Agenda
©Hitachi, Ltd. 2025. All rights reserved
9
OAuthとは
OAuthとOIDCの基礎知識
OAuth (OAuth 2.0)は、ユーザーのリソースへのアクセスを外部アプリケーションに認可するためのプロトコルであり、API
認可で広く用いられています。
API認可とは、「API呼び出しを行う際の認可」のことです。
OAuthには、リソースオーナー、リソースサーバー、クライアント、認可サーバー、といった4つの登場人物が存在します。
©Hitachi, Ltd. 2025. All rights reserved
10
OAuthのフロー
OAuthとOIDCの基礎知識
OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら
すべてのフローに対応しています。
ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。
リソースオーナー
(ブラウザー)
クライアント 認可サーバー リソースサーバー
API連携指示
認可リクエスト
ログイン
同意
ログイン画面
同意画面
認可レスポンス
トークンリクエスト
トークンレスポンス
API呼出し w/ アクセストークン
©Hitachi, Ltd. 2025. All rights reserved
11
OAuthのフロー
OAuthとOIDCの基礎知識
OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら
すべてのフローに対応しています。
ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。
リソースオーナー
(ブラウザー)
クライアント 認可サーバー リソースサーバー
API連携指示
認可リクエスト
ログイン
同意
ログイン画面
同意画面
認可レスポンス
トークンリクエスト
トークンレスポンス
API呼出し w/ アクセストークン
©Hitachi, Ltd. 2025. All rights reserved
12
OAuthのフロー
OAuthとOIDCの基礎知識
OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら
すべてのフローに対応しています。
ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。
リソースオーナー
(ブラウザー)
クライアント 認可サーバー リソースサーバー
API連携指示
認可リクエスト
ログイン
同意
ログイン画面
同意画面
認可レスポンス
トークンリクエスト
トークンレスポンス
API呼出し w/ アクセストークン
HTTP/1.1 302 Found
Location:
https://keycloak.example.com/realms/example/protocol/op
enid-connect/auth
?response_type=code&client_id=kakeiboapp&redirect_uri
=https%3A%2F%2Fkakeibo.example.com%2Fgettoken&sc
ope=read_balance
©Hitachi, Ltd. 2025. All rights reserved
13
OAuthのフロー
OAuthとOIDCの基礎知識
OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら
すべてのフローに対応しています。
ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。
リソースオーナー
(ブラウザー)
クライアント 認可サーバー リソースサーバー
API連携指示
認可リクエスト
ログイン
同意
ログイン画面
同意画面
認可レスポンス
トークンリクエスト
トークンレスポンス
API呼出し w/ アクセストークン
©Hitachi, Ltd. 2025. All rights reserved
14
OAuthのフロー
OAuthとOIDCの基礎知識
OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら
すべてのフローに対応しています。
ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。
リソースオーナー
(ブラウザー)
クライアント 認可サーバー リソースサーバー
API連携指示
認可リクエスト
ログイン
同意
ログイン画面
同意画面
認可レスポンス
トークンリクエスト
トークンレスポンス
API呼出し w/ アクセストークン
©Hitachi, Ltd. 2025. All rights reserved
15
OAuthのフロー
OAuthとOIDCの基礎知識
OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら
すべてのフローに対応しています。
ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。
リソースオーナー
(ブラウザー)
クライアント 認可サーバー リソースサーバー
API連携指示
認可リクエスト
ログイン
同意
ログイン画面
同意画面
認可レスポンス
トークンリクエスト
トークンレスポンス
API呼出し w/ アクセストークン
HTTP/1.1 302 Found
Location: https://kakeibo.example.com/gettoken
?session_state=0c1ab474-d596-4abe-aeea-
2b57af3304a5&iss=https%3A%2F%2Fkeycloak.example.co
m%2Frealms%2Fapi&code=54af2eef-8b71-4c4e-b5f4-
381165cda2a5.0c1ab474-d596-4abe-aeea-
2b57af3304a5.e24e64db-66d5-479b-8cfc-e921e1b429d3
©Hitachi, Ltd. 2025. All rights reserved
16
OAuthのフロー
OAuthとOIDCの基礎知識
OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら
すべてのフローに対応しています。
ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。
リソースオーナー
(ブラウザー)
クライアント 認可サーバー リソースサーバー
API連携指示
認可リクエスト
ログイン
同意
ログイン画面
同意画面
認可レスポンス
トークンリクエスト
トークンレスポンス
API呼出し w/ アクセストークン
POST /realms/example/protocol/openid-connect/token
HTTP/1.1
Authorization: Basic
a2FrZWlibzo5M2U1ODEzYy1kYTJhLTRmMzQtOWZjNi01Zm
JmM2FmNmZkNjE=
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=54af2eef-8b71-
4c4e-b5f4-381165cda2a5.0c1ab474-d596-4abe-aeea-
2b57af3304a5.e24e64db-66d5-479b-8cfc-
e921e1b429d3&redirect_uri=https%3A%2F%2Fkakeibo.exa
mple.com%2Fgettoken
©Hitachi, Ltd. 2025. All rights reserved
17
OAuthのフロー
OAuthとOIDCの基礎知識
OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら
すべてのフローに対応しています。
ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。
リソースオーナー
(ブラウザー)
クライアント 認可サーバー リソースサーバー
API連携指示
認可リクエスト
ログイン
同意
ログイン画面
同意画面
認可レスポンス
トークンリクエスト
トークンレスポンス
API呼出し w/ アクセストークン
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"eyJhbGciOiJS<略>",
"expires_in":300,
"refresh_expires_in":1800,
"refresh_token":"eyJhbGciOiJI<略>",
"token_type":"Bearer",
"not-before-policy":0,
"session_state":"98793696-3f01-4a35-801a-4d30dcf75628",
"scope":"read_balance"
}
©Hitachi, Ltd. 2025. All rights reserved
18
OAuthのフロー
OAuthとOIDCの基礎知識
OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら
すべてのフローに対応しています。
ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。
リソースオーナー
(ブラウザー)
クライアント 認可サーバー リソースサーバー
API連携指示
認可リクエスト
ログイン
同意
ログイン画面
同意画面
認可レスポンス
トークンリクエスト
トークンレスポンス
API呼出し w/ アクセストークン
GET /sampleapi HTTP/1.1
Authorization: Bearer eyJhbGciOiJS<略>
©Hitachi, Ltd. 2025. All rights reserved
19
アクセストークン
OAuthとOIDCの基礎知識
Keycloakのアクセストークンは、JWS(JSON Web Signature)に従ったフォーマットで表現され、Base64URLエン
コードされた3つの文字列が「.」で連結されています。
中央のペイロード部分にトークンとして扱うために必要な情報が、JWT(JSON Web Token)と呼ばれるJSON形式
で格納されています。
©Hitachi, Ltd. 2025. All rights reserved
20
リフレッシュトークン
OAuthとOIDCの基礎知識
リフレッシュトークンは、アクセストークンと一緒に発行され、アクセストークンを再発行するために使います。
クライアント 認可サーバー
リフレッシュリクエスト
w/ リフレッシュトークン
リフレッシュレスポンス
POST /realms/example/protocol/openid-connect/token
HTTP/1.1
Authorization: Basic
YXBwbGljYXRpb246OTNlNTgxM2MtZGEyYS00ZjM0LTlmYzYt
NWZiZjNhZjZmZDYx
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token=eyJhbGciOiJI<略>
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"eyJhbGciOiJS<略>",
"expires_in":300,
"refresh_expires_in":1800,
"refresh_token":"eyJhbGciOiJI<略>",
"token_type":"Bearer",
"not-before-policy":0,
"session_state":"98793696-3f01-4a35-801a-4d30dcf75628",
"scope":"read_balance"
}
©Hitachi, Ltd. 2025. All rights reserved
21
トークン無効化
OAuthとOIDCの基礎知識
トークンは、トークン無効化エンドポイントを使って無効化することができます。
クライアント 認可サーバー
無効化リクエスト
無効化レスポンス
POST /realms/example/protocol/openid-connect/revoke
HTTP/1.1
Authorization: Basic
YXBwbGljYXRpb246OTNlNTgxM2MtZGEyYS00ZjM0LTlmYz
YtNWZiZjNhZjZmZDYx
Content-Type: application/x-www-form-urlencoded
token=eyJhbGciOiJS<略>&token_type_hint=refresh_token
HTTP/1.1 200 OK
©Hitachi, Ltd. 2025. All rights reserved
22
リソースサーバーでの認可判断
OAuthとOIDCの基礎知識
リソースサーバーは、アクセストークンを用いて、認可判断や業務処理を行います。
©Hitachi, Ltd. 2025. All rights reserved
23
トークンイントロスペクション
OAuthとOIDCの基礎知識
認可サーバーのイントロスペクションエンドポイントにトークンを送信すると、認可サーバーは、それが有効であるか否かを
判断し、結果を属性情報とともに返却します。
クライアント 認可サーバー リソースサーバー
API呼出し w/ アクセストークン
イントロスペクションリクエスト
イントロスペクションレスポンス
POST
/realms/example/protocol/openid-
connect/token/introspect HTTP/1.1
Authorization: Basic
cmVzb3VyY2Utc2VydmVyOmIxNzg0
MzI3LWIxMGEtNDJlNi1iMWIxLWVkZ
Dc5ND g0MGMxZg==
Content-Type: application/x-www-
form-urlencoded
token=eyJhbGciOiJS<略>
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
[アクセストークンのJWSペイロードの内容]
"active": true
}
©Hitachi, Ltd. 2025. All rights reserved
24
OIDCとは
OAuthとOIDCの基礎知識
OIDCは、OAuthを拡張して作られた認証のためのプロトコルであり、主にSSOに使われます。
ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。
エンドユーザー
(ブラウザー)
RP
*Relying Party
OP
*OpenID Provider
API連携指示
認可リクエスト
ログイン
同意
ログイン画面
同意画面
認可レスポンス
トークンリクエスト
トークンレスポンス
©Hitachi, Ltd. 2025. All rights reserved
25
OIDCとは
OAuthとOIDCの基礎知識
OIDCは、OAuthを拡張して作られた認証のためのプロトコルであり、主にSSOに使われます。
ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。
エンドユーザー
(ブラウザー)
RP OP
API連携指示
認可リクエスト
ログイン
同意
ログイン画面
同意画面
認可レスポンス
トークンリクエスト
トークンレスポンス
トークンレスポンスでIDトークンも一緒に返却
する。
IDトークンを検証し、RPはOPで認証されたエ
ンドユーザーの情報を取得する。
©Hitachi, Ltd. 2025. All rights reserved
26
ログアウト
OAuthとOIDCの基礎知識
OIDCではログアウトについても規定されています。
ここでは、「バックチャネルログアウト」のフローについて説明します。
エンドユーザー
(ブラウザー)
RP1 OP RP2
ログアウト指示
ログアウトリクエスト
ログアウト後URLに遷移
バックチャネルログアウト
セッション削除
セッション削除
セッション削除
©Hitachi, Ltd. 2025. All rights reserved
27
1 認証と認可およびKeycloakの概要
2 OAuthとOIDCの基礎知識
3 デモ
Agenda
©Hitachi, Ltd. 2025. All rights reserved
28
デモの構成
デモ
認可コードフローによるアクセストークンの取得、リソースサーバーにおける認可判断、トークンリフレッシュ、トークン無効化
についてデモを行います。
©Hitachi, Ltd. 2025. All rights reserved
29
商標
OpenID is a trademark or registered trademark of OpenID Foundation 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.
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
©Hitachi, Ltd. 2025. All rights reserved
Thank you
30
スクエアfreeセミナー第167回
田畑 義之
Hitachi OSPO
API認可を支えるKeycloakの基本と設計の考え方
~ OAuth/OIDCによるAPI保護のベストプラクティス ~
June 26, 2025
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~

API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~

  • 1.
    ©Hitachi, Ltd. 2025.All rights reserved スクエアfreeセミナー第167回 API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~ Prepared by 田畑 義之 Hitachi OSPO Date June 26, 2025
  • 2.
    ©Hitachi, Ltd. 2025.All rights reserved 2 1 認証と認可およびKeycloakの概要 2 OAuthとOIDCの基礎知識 3 デモ Agenda
  • 3.
    ©Hitachi, Ltd. 2025.All rights reserved Welcome – about speaker API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~ 3 田畑 義之 シニアOSSコンサルタント Hitachi OSPO ➢ CNCF TAG Security and ComplianceのTech Lead ➢ CNCF Ambassador / Cloud Native Community Japan organizer / Cloud Native Security Japan founder ➢ LinkedIn: @ytabata, X: @yo_tabata, GitHub: @y-tabata • IDアクセス管理(IAM)とAPI分野のコンサルタント ➢APIおよび認証・認可プラットフォーム構築の上流工程等。 • コミュニティ貢献 ➢CNCF TAG Security への貢献(ホワイトペーパー執筆など)。 ➢Keycloak(IAMのOSS)などのOSSの開発。 • その他の活動 ➢KubeCon、Apidays、Open Source Summit などのイベントでの講演。 ➢KeycloakやIAMに関する書籍や記事の執筆。 ➢日本でCNCF関連ミートアップの主催。
  • 4.
    ©Hitachi, Ltd. 2025.All rights reserved 4 1 認証と認可およびKeycloakの概要 2 OAuthとOIDCの基礎知識 3 デモ Agenda
  • 5.
    ©Hitachi, Ltd. 2025.All rights reserved 5 認証と認可とは 認証と認可およびKeycloakの概要 システムがユーザーに応じた適切な処理を行うためには、認証(Authentication)と認可(Authorization)が必 須です。
  • 6.
    ©Hitachi, Ltd. 2025.All rights reserved 6 Keycloakとは 認証と認可およびKeycloakの概要 主な機能 ⚫ 標準仕様のサポート。 ex. OAuth 2.0, OpenID Connect 1.0, SAML v2, … ⚫ SNSアカウントを使ったログイン。 ex. GitHub, X, Facebook, … ⚫ 既存ユーザストアとの連携。 ex. LDAP, Active Directory, … • IAM (IDアクセス管理) のOSS。 • OAuth2認可サーバの機能とシングルサインオン (SSO) の機能を有する。 • CNCF Incubatingプロジェクト。 標準仕様のサポート Keycloak LDAP Active Directory RDB OpenID Connect 1.0 SAML v2 GitHub X Facebook ID管理 ソーシャルログイン OAuth 2.0
  • 7.
    ©Hitachi, Ltd. 2025.All rights reserved 7 Keycloakの主要なユースケース 認証と認可およびKeycloakの概要 Keycloakには主に、①API認可、②SSO(シングルサインオン)、③さまざまな認証、の3つのユースケースがあります。 前半の本セッションでは①のAPI認可のユースケースを詳しく取り上げます。
  • 8.
    ©Hitachi, Ltd. 2025.All rights reserved 8 1 認証と認可およびKeycloakの概要 2 OAuthとOIDCの基礎知識 3 デモ Agenda
  • 9.
    ©Hitachi, Ltd. 2025.All rights reserved 9 OAuthとは OAuthとOIDCの基礎知識 OAuth (OAuth 2.0)は、ユーザーのリソースへのアクセスを外部アプリケーションに認可するためのプロトコルであり、API 認可で広く用いられています。 API認可とは、「API呼び出しを行う際の認可」のことです。 OAuthには、リソースオーナー、リソースサーバー、クライアント、認可サーバー、といった4つの登場人物が存在します。
  • 10.
    ©Hitachi, Ltd. 2025.All rights reserved 10 OAuthのフロー OAuthとOIDCの基礎知識 OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら すべてのフローに対応しています。 ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。 リソースオーナー (ブラウザー) クライアント 認可サーバー リソースサーバー API連携指示 認可リクエスト ログイン 同意 ログイン画面 同意画面 認可レスポンス トークンリクエスト トークンレスポンス API呼出し w/ アクセストークン
  • 11.
    ©Hitachi, Ltd. 2025.All rights reserved 11 OAuthのフロー OAuthとOIDCの基礎知識 OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら すべてのフローに対応しています。 ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。 リソースオーナー (ブラウザー) クライアント 認可サーバー リソースサーバー API連携指示 認可リクエスト ログイン 同意 ログイン画面 同意画面 認可レスポンス トークンリクエスト トークンレスポンス API呼出し w/ アクセストークン
  • 12.
    ©Hitachi, Ltd. 2025.All rights reserved 12 OAuthのフロー OAuthとOIDCの基礎知識 OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら すべてのフローに対応しています。 ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。 リソースオーナー (ブラウザー) クライアント 認可サーバー リソースサーバー API連携指示 認可リクエスト ログイン 同意 ログイン画面 同意画面 認可レスポンス トークンリクエスト トークンレスポンス API呼出し w/ アクセストークン HTTP/1.1 302 Found Location: https://keycloak.example.com/realms/example/protocol/op enid-connect/auth ?response_type=code&client_id=kakeiboapp&redirect_uri =https%3A%2F%2Fkakeibo.example.com%2Fgettoken&sc ope=read_balance
  • 13.
    ©Hitachi, Ltd. 2025.All rights reserved 13 OAuthのフロー OAuthとOIDCの基礎知識 OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら すべてのフローに対応しています。 ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。 リソースオーナー (ブラウザー) クライアント 認可サーバー リソースサーバー API連携指示 認可リクエスト ログイン 同意 ログイン画面 同意画面 認可レスポンス トークンリクエスト トークンレスポンス API呼出し w/ アクセストークン
  • 14.
    ©Hitachi, Ltd. 2025.All rights reserved 14 OAuthのフロー OAuthとOIDCの基礎知識 OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら すべてのフローに対応しています。 ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。 リソースオーナー (ブラウザー) クライアント 認可サーバー リソースサーバー API連携指示 認可リクエスト ログイン 同意 ログイン画面 同意画面 認可レスポンス トークンリクエスト トークンレスポンス API呼出し w/ アクセストークン
  • 15.
    ©Hitachi, Ltd. 2025.All rights reserved 15 OAuthのフロー OAuthとOIDCの基礎知識 OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら すべてのフローに対応しています。 ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。 リソースオーナー (ブラウザー) クライアント 認可サーバー リソースサーバー API連携指示 認可リクエスト ログイン 同意 ログイン画面 同意画面 認可レスポンス トークンリクエスト トークンレスポンス API呼出し w/ アクセストークン HTTP/1.1 302 Found Location: https://kakeibo.example.com/gettoken ?session_state=0c1ab474-d596-4abe-aeea- 2b57af3304a5&iss=https%3A%2F%2Fkeycloak.example.co m%2Frealms%2Fapi&code=54af2eef-8b71-4c4e-b5f4- 381165cda2a5.0c1ab474-d596-4abe-aeea- 2b57af3304a5.e24e64db-66d5-479b-8cfc-e921e1b429d3
  • 16.
    ©Hitachi, Ltd. 2025.All rights reserved 16 OAuthのフロー OAuthとOIDCの基礎知識 OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら すべてのフローに対応しています。 ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。 リソースオーナー (ブラウザー) クライアント 認可サーバー リソースサーバー API連携指示 認可リクエスト ログイン 同意 ログイン画面 同意画面 認可レスポンス トークンリクエスト トークンレスポンス API呼出し w/ アクセストークン POST /realms/example/protocol/openid-connect/token HTTP/1.1 Authorization: Basic a2FrZWlibzo5M2U1ODEzYy1kYTJhLTRmMzQtOWZjNi01Zm JmM2FmNmZkNjE= Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&code=54af2eef-8b71- 4c4e-b5f4-381165cda2a5.0c1ab474-d596-4abe-aeea- 2b57af3304a5.e24e64db-66d5-479b-8cfc- e921e1b429d3&redirect_uri=https%3A%2F%2Fkakeibo.exa mple.com%2Fgettoken
  • 17.
    ©Hitachi, Ltd. 2025.All rights reserved 17 OAuthのフロー OAuthとOIDCの基礎知識 OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら すべてのフローに対応しています。 ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。 リソースオーナー (ブラウザー) クライアント 認可サーバー リソースサーバー API連携指示 認可リクエスト ログイン 同意 ログイン画面 同意画面 認可レスポンス トークンリクエスト トークンレスポンス API呼出し w/ アクセストークン HTTP/1.1 200 OK Content-Type: application/json Cache-Control: no-store Pragma: no-cache { "access_token":"eyJhbGciOiJS<略>", "expires_in":300, "refresh_expires_in":1800, "refresh_token":"eyJhbGciOiJI<略>", "token_type":"Bearer", "not-before-policy":0, "session_state":"98793696-3f01-4a35-801a-4d30dcf75628", "scope":"read_balance" }
  • 18.
    ©Hitachi, Ltd. 2025.All rights reserved 18 OAuthのフロー OAuthとOIDCの基礎知識 OAuthではアクセストークンを発行するため、4種類のフローが定義されています。Keycloakは認可サーバーとしてこれら すべてのフローに対応しています。 ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。 リソースオーナー (ブラウザー) クライアント 認可サーバー リソースサーバー API連携指示 認可リクエスト ログイン 同意 ログイン画面 同意画面 認可レスポンス トークンリクエスト トークンレスポンス API呼出し w/ アクセストークン GET /sampleapi HTTP/1.1 Authorization: Bearer eyJhbGciOiJS<略>
  • 19.
    ©Hitachi, Ltd. 2025.All rights reserved 19 アクセストークン OAuthとOIDCの基礎知識 Keycloakのアクセストークンは、JWS(JSON Web Signature)に従ったフォーマットで表現され、Base64URLエン コードされた3つの文字列が「.」で連結されています。 中央のペイロード部分にトークンとして扱うために必要な情報が、JWT(JSON Web Token)と呼ばれるJSON形式 で格納されています。
  • 20.
    ©Hitachi, Ltd. 2025.All rights reserved 20 リフレッシュトークン OAuthとOIDCの基礎知識 リフレッシュトークンは、アクセストークンと一緒に発行され、アクセストークンを再発行するために使います。 クライアント 認可サーバー リフレッシュリクエスト w/ リフレッシュトークン リフレッシュレスポンス POST /realms/example/protocol/openid-connect/token HTTP/1.1 Authorization: Basic YXBwbGljYXRpb246OTNlNTgxM2MtZGEyYS00ZjM0LTlmYzYt NWZiZjNhZjZmZDYx Content-Type: application/x-www-form-urlencoded grant_type=refresh_token&refresh_token=eyJhbGciOiJI<略> HTTP/1.1 200 OK Content-Type: application/json Cache-Control: no-store Pragma: no-cache { "access_token":"eyJhbGciOiJS<略>", "expires_in":300, "refresh_expires_in":1800, "refresh_token":"eyJhbGciOiJI<略>", "token_type":"Bearer", "not-before-policy":0, "session_state":"98793696-3f01-4a35-801a-4d30dcf75628", "scope":"read_balance" }
  • 21.
    ©Hitachi, Ltd. 2025.All rights reserved 21 トークン無効化 OAuthとOIDCの基礎知識 トークンは、トークン無効化エンドポイントを使って無効化することができます。 クライアント 認可サーバー 無効化リクエスト 無効化レスポンス POST /realms/example/protocol/openid-connect/revoke HTTP/1.1 Authorization: Basic YXBwbGljYXRpb246OTNlNTgxM2MtZGEyYS00ZjM0LTlmYz YtNWZiZjNhZjZmZDYx Content-Type: application/x-www-form-urlencoded token=eyJhbGciOiJS<略>&token_type_hint=refresh_token HTTP/1.1 200 OK
  • 22.
    ©Hitachi, Ltd. 2025.All rights reserved 22 リソースサーバーでの認可判断 OAuthとOIDCの基礎知識 リソースサーバーは、アクセストークンを用いて、認可判断や業務処理を行います。
  • 23.
    ©Hitachi, Ltd. 2025.All rights reserved 23 トークンイントロスペクション OAuthとOIDCの基礎知識 認可サーバーのイントロスペクションエンドポイントにトークンを送信すると、認可サーバーは、それが有効であるか否かを 判断し、結果を属性情報とともに返却します。 クライアント 認可サーバー リソースサーバー API呼出し w/ アクセストークン イントロスペクションリクエスト イントロスペクションレスポンス POST /realms/example/protocol/openid- connect/token/introspect HTTP/1.1 Authorization: Basic cmVzb3VyY2Utc2VydmVyOmIxNzg0 MzI3LWIxMGEtNDJlNi1iMWIxLWVkZ Dc5ND g0MGMxZg== Content-Type: application/x-www- form-urlencoded token=eyJhbGciOiJS<略> HTTP/1.1 200 OK Content-Type: application/json Cache-Control: no-store Pragma: no-cache { [アクセストークンのJWSペイロードの内容] "active": true }
  • 24.
    ©Hitachi, Ltd. 2025.All rights reserved 24 OIDCとは OAuthとOIDCの基礎知識 OIDCは、OAuthを拡張して作られた認証のためのプロトコルであり、主にSSOに使われます。 ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。 エンドユーザー (ブラウザー) RP *Relying Party OP *OpenID Provider API連携指示 認可リクエスト ログイン 同意 ログイン画面 同意画面 認可レスポンス トークンリクエスト トークンレスポンス
  • 25.
    ©Hitachi, Ltd. 2025.All rights reserved 25 OIDCとは OAuthとOIDCの基礎知識 OIDCは、OAuthを拡張して作られた認証のためのプロトコルであり、主にSSOに使われます。 ここでは、ユーザーの認証が必要な場合によく用いられる「認可コードフロー」について説明します。 エンドユーザー (ブラウザー) RP OP API連携指示 認可リクエスト ログイン 同意 ログイン画面 同意画面 認可レスポンス トークンリクエスト トークンレスポンス トークンレスポンスでIDトークンも一緒に返却 する。 IDトークンを検証し、RPはOPで認証されたエ ンドユーザーの情報を取得する。
  • 26.
    ©Hitachi, Ltd. 2025.All rights reserved 26 ログアウト OAuthとOIDCの基礎知識 OIDCではログアウトについても規定されています。 ここでは、「バックチャネルログアウト」のフローについて説明します。 エンドユーザー (ブラウザー) RP1 OP RP2 ログアウト指示 ログアウトリクエスト ログアウト後URLに遷移 バックチャネルログアウト セッション削除 セッション削除 セッション削除
  • 27.
    ©Hitachi, Ltd. 2025.All rights reserved 27 1 認証と認可およびKeycloakの概要 2 OAuthとOIDCの基礎知識 3 デモ Agenda
  • 28.
    ©Hitachi, Ltd. 2025.All rights reserved 28 デモの構成 デモ 認可コードフローによるアクセストークンの取得、リソースサーバーにおける認可判断、トークンリフレッシュ、トークン無効化 についてデモを行います。
  • 29.
    ©Hitachi, Ltd. 2025.All rights reserved 29 商標 OpenID is a trademark or registered trademark of OpenID Foundation 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. API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
  • 30.
    ©Hitachi, Ltd. 2025.All rights reserved Thank you 30 スクエアfreeセミナー第167回 田畑 義之 Hitachi OSPO API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~ June 26, 2025