OAuth2・OpenID Connectによる認証認可方式と認証認可フロー(OAuthダンス)
OAuth2・OpenID Connectによる認証認可方式と認証認可フロー(OAuthダンス)について説明する。
目次
認証認可方式と認証認可フロー
1.概要
OAuth 2.0・OpenID Connectによる認証認可方式についてと認証認可フローの検証について記述する。
OAuth 2.0とはアクセス権の認可を行うプロトコルである。(RFC 6749)
OpenID ConnectとはOAuth 2.0を元にJWT(JSON Web Token)の要素を加え安全に認証情報を受け渡せるようにした認可フレームワークである。
認証認可フローの検証は認可サーバとしてKeycloakを用いる。
KeycloakとはRed Hatが開発したオープンソースソフトウェア(OSS)であり、SSOや認証・認可を行うアイデンティティアクセス管理ソフトウェアである。
◎ Keycloak
2.認証認可方式について

3.認証認可フロー
以下、Keycloakを用いたOAuth2.0・OpenIDConnectの認証認可フロー図である。
ID・PWによる認証の後、認可コードを受け取り、トークンの発行に使用していることがわかる。
また、アクセストークンを用いてAPIにアクセスし、APIはアクセストークンの検証を行っている。

4.各リクエスト・レスポンスの実際の値
OAuth 2.0・OpenID Connectにかかわるリクエスト・レスポンスは以下の様になっている。
認証認可フロー⑳
認証サーバに認可コードを連携
認証認可方式#1の認可コードによる付与方式で動作していることがわかる。

認証認可フロー㉒
認証サーバからトークン返却
返却されたJSONデータの中に、上からアクセストークン、リフレッシュトークン、IDトークンが存在することがわかる。

認証認可フロー㉗
WebAPからAPI呼出
Authorization: Bearerヘッダでアクセストークンを連携していることがわかる。

認証認可フロー㉙
アクセストークン検証依頼
subject_tokenでアクセストークンを連携していることがわかる。

認証認可フロー㉛
アクセストークン検証結果
トークンが返却されている。アクセス権がない場合は403が返却される。

認証認可フロー㊼
リフレッシュトークンを失効させる(ログアウト)
ログアウトする際は失効させたいリフレッシュトークンを連携していることがわかる。
