oidc調査
OIDC(OpenID Connect) は「IDトークンを発行する仕組み」
具体性の高い説明の記事で勉強
https://qiita.com/TakahikoKawasaki/items/8f0e422c7edd2d220e06 external_link
とりあえず ID トークンは認証時に発行される何かしらの識別用文字列。SAMLでゆうアサーションに当たるのかな
JSONデータを用いた情報伝達方法が、フォーマットによって何種類かあるらしい、この記事で解説してるのは
- JWS (JSON Web Signature)
- JWE (JSON Web Encryption)
- JWK (JSON Web Key)
- JWT (JSON Web Token)
ID トークンはその中の JWT(JWTを説明するにはJWS, JWE, JWK を理解しておくと早いのでそれらも解説している)
ID トークンの構成
ヘッダー.ペイロード.署名
RFC 7515 (JSON Web Signature (JWS)) の「7.1. JWS Compact Serialization」で定義されている「JSON Web Signature (JWS) の Compact Serialization 形式」
らしい
JWS
具体的なフォーマット
BASE64URL(UTF8(JWS Protected Header)) || '.' || BASE64URL(JWS Payload) || '.' || BASE64URL(JWS Signature)
それぞれbase64でエンコードされている。記事ではデコードしてみて、どのような情報が含まれているのか紹介してくれている
署名に関してはバイナリデータが得られる。これはヘッダーペイロードに対する署名、記事内の例ではそのアルゴリズムがRS256であり、そのことはヘッダーに記載してある。
JWE
...
まあとにかく
OIDCはこの ID トークンを発行して認証を行う方式
認証フローの図解
検索したらトップに来るので貼るまでもないが
https://qiita.com/TakahikoKawasaki/items/4ee9b55db9f7ef352b47 external_link
https://qiita.com/TakahikoKawasaki/items/498ca08bbfcc341691fe external_link
↑題名の通り一番分かりやすい。この名刺の例ならIssuer Hostが直感的にわかる(まだあってるかどうか確認できてないけど)
ただ構成としては
[認証クリアして利用したいアプリ]
|
[アプリの認証画面] ー [OpenID プロバイダー]
|
[ユーザー]
の方が分かりやすいんじゃないか。利用したいアプリをGROWIだとすると、アプリの認証画面はGROWIのログイン画面で、OpenIDプロバイダーとユーザーとのやりとりはプロバイダの画面が出て来るところなのでは
GROWI における OIDC 設定
- ホスト、アカウントの情報
- Provider Name
- プロバイダ名
- Issuer Host
- ホスト名
- Client ID
- Client Secret
- Provider Name
- 各種操作のエンドポイント
- Authorization Endpoint
- Token Endpoint
- Revocation Endpoint
- Introspection Endpoint
- UserInfo Endpoint
- EndSessioin Endpoint
- Registration Endpoint
- JSON Web Key Set URL
- Attr Map(ユーザーの各種情報の紐付け)
発表に向けて
概要(認証のイメージ)に関して
細かい点を抜かせばSAMLと同じように認証の流れを説明すれば良さそうなので、SAMLと一緒に説明しつつ、違う部分だけ軽く補足すれば良さそう
ハンズオン
Auth0 を使ったハンズオンならできそう