Open21

oidc

Hiromu KariyaHiromu Kariya

oauth

Hiromu KariyaHiromu Kariya

認可サーバー→事前に申請してクライアントid、クライアントシークレットを発行。アプリはそれを持っておく

Hiromu KariyaHiromu Kariya

ユーザーが連携要求→クライアントidをつけて認可サーバーにリダイレクト
ユーザーは認可サーバーでid/passなど入力して承認
アプリに認可コードが届く
認可コードとユーザーを紐づける??←これは違う

Hiromu KariyaHiromu Kariya

認可コードを認可サーバーに渡してアクセストークンをもらう
アクセストークンでリソースサーバーにアクセスして必要なものをもらう

Hiromu KariyaHiromu Kariya

ここからoidc
認可コードを認可サーバーに渡すと、アクセストークン&リフレッシュトークンに加え、idトークンがもらえる。厳密にはパターンによって違い、idトークンは絶対もらえる。
jwt形式になっていて、この中にユニークなidが入っている。

Hiromu KariyaHiromu Kariya

ディスカバリーエンドポイント、連携初めにプロバイダから情報もらうやつ

Hiromu KariyaHiromu Kariya

jwk setアンドポイント、idトークン検証のための公開鍵がわかる

Hiromu KariyaHiromu Kariya

ユーザーidなどはstateパラメーターにjsonをbase64エンコードして追加する感じ
これで後から連携ができる

Hiromu KariyaHiromu Kariya

連携解除はrevokeエンドポイントにアクセストークンを渡す

Hiromu KariyaHiromu Kariya

認可トークンで、idトークン、アクセストークン、リフレッシュトークンをもらう?
idトークンはjwt形式で、デコードしたsubがプロバイダのユーザーid

まあ、あんまり使わなそうで
アクセス、リフレッシュトークンだけアプリで保持する感じかなあ

Hiromu KariyaHiromu Kariya

oauth2.0 認可だけしかしない
oidc auth2.0の拡張で、認証もする