質問内容
OpenID Connectの「IDトークン」について、発行方法や検証方法は調べて分かったのですが、利用方法が分からないため、これについてお伺いしたいです。
調査した事
3つのエンドポイント
3つのエンドポイントが存在し、それぞれ以下の役割をしています。
(インプリシットフローなどいくつか認証フローがありますが、ここでは以下のみ説明します。)
- 【認可エンドポイント】:RPから認証リクエストを受け、認可コードを返却する
- 【トークンエンドポイント】:RPから認可コード&属性情報を受け、IDトークン&アクセストークンを返却する
- 【ユーザ情報エンドポイント】:RPからユーザ情報取得リクエストを受け、ユーザ情報を返却する
IDトークンの検証
3つのエンドポイントから取得した情報により、RPサーバには以下の情報が存在します。
- IDトークン
- アクセストークン
- ユーザ情報
このうち「IDトークン」についてはRPサーバ側で検証をする必要があります。
(検証方法については今回関係ないので割愛します)
いざログイン
例えば、AさんがGoogleアカウントを使ってTeratailにログインしたい場合で考えます。
- AさんがTeratailのログイン画面から「Googleでログイン」を押下
- Googleの認証画面が表示されるため、ID/PWを入力
- リダイレクト画面が表示される(画面上は何も表示されない)
- Teratailのトップ画面に遷移する
この時の動きとして、**「2で認証成功した後、TeratailにAさんのユーザ情報が返却され、Teratailは自身のDBからAさんのユーザ情報を取得し、ユーザ情報が存在すれば認証OKとする」**という動きになると推測しているのですが、合っていますでしょうか?
そうなるとIDトークンはいざログインする際には使わない事になるため、検証後に捨てる事になるかと思うのですが合っていますでしょうか?
参考文献
Authleteで提供されているシーケンス図
https://www.authlete.com/resources/templates/sequence-diagrams/
TakahikoKawasakiさんのQiita記事
https://qiita.com/TakahikoKawasaki
IPAのアクセス制御についての文書
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/104.html
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。