HOME > 技術レポート > セキュリティ > OAuth2・OpenID Connectによる認証認可方式と認証認可フロー(OAuthダンス)

2019年11月07

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や認証・認可を行うアイデンティティアクセス管理ソフトウェアである。

2.認証認可方式について

方式.PNG

3.認証認可フロー

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

フロー図.PNG

4.各リクエスト・レスポンスの実際の値

OAuth 2.0・OpenID Connectにかかわるリクエスト・レスポンスは以下の様になっている。

認証認可フロー⑳

認証サーバに認可コードを連携
認証認可方式#1の認可コードによる付与方式で動作していることがわかる。

認証認可フロー20.PNG

認証認可フロー㉒

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

認証認可フロー22.PNG

認証認可フロー㉗

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

認証認可フロー㉙

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

認証認可フロー㉛

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

認証認可フロー31.PNG

認証認可フロー㊼

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

認証認可フロー47.PNG