# oidc調査
OIDC(OpenID Connect) は「IDトークンを発行する仕組み」

# 具体性の高い説明の記事で勉強
https://qiita.com/TakahikoKawasaki/items/8f0e422c7edd2d220e06

とりあえず 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

https://qiita.com/TakahikoKawasaki/items/498ca08bbfcc341691fe

↑題名の通り一番分かりやすい。この名刺の例ならIssuer Hostが直感的にわかる（まだあってるかどうか確認できてないけど）

ただ構成としては

[認証クリアして利用したいアプリ]

｜

[アプリの認証画面] ー [OpenID プロバイダー]

|

[ユーザー]

の方が分かりやすいんじゃないか。利用したいアプリをGROWIだとすると、アプリの認証画面はGROWIのログイン画面で、OpenIDプロバイダーとユーザーとのやりとりはプロバイダの画面が出て来るところなのでは


# GROWI における OIDC 設定
- ホスト、アカウントの情報
    - Provider Name
        - プロバイダ名
    - Issuer Host
        - ホスト名
    - Client ID
    - Client Secret
- 各種操作のエンドポイント
    - Authorization Endpoint
    - Token Endpoint
    - Revocation Endpoint
    - Introspection Endpoint
    - UserInfo Endpoint
    - EndSessioin Endpoint
    - Registration Endpoint
    - JSON Web Key Set URL
- Attr Map(ユーザーの各種情報の紐付け)


# 発表に向けて
## 概要（認証のイメージ)に関して
細かい点を抜かせばSAMLと同じように認証の流れを説明すれば良さそうなので、SAMLと一緒に説明しつつ、違う部分だけ軽く補足すれば良さそう

## ハンズオン
Auth0 を使ったハンズオンならできそう



---

## Page Navigation

- Canonical URL: https://tips.weseek.co.jp/GROWI/SSOと仲良くなろう/oidc調査
- Permalink: https://tips.weseek.co.jp/5f9bf202cc66c90048bdf08b
- Parent: [SSOと仲良くなろう](/5f99372a04330d004832a02c.md)
- Children: 0 total
- Total descendants: 0
- Siblings: 3 total
  - [20201030_キックオフミーティング](/5f9be643cc66c90048bdef75.md)
  - [saml調査](/5f9bf1facc66c90048bdf087.md)
  - [勉強会資料](/5fdb1d7e4d76f70049f9e691.md)
- Last updated: 2020-12-17T08:57:08.977Z by deleted_at_1672138409189
- Full page listing (all children regardless of count): https://tips.weseek.co.jp/_api/v3/page-listing/children?id=5f9bf202cc66c90048bdf08b
