ご教授ありがとうございます。
max_age(≒auth_time)の評価をやめて回避しまして、おかげで以降は問題なく動くようになりました。 ありがとうございました。
- 0
RPのサービス要件次第だと思いますが、再認証が必要ないのであればmax_ageは不要かとおもいます。 反対に再認証が必要となるユースケースとは、ECサイトで商品購入時の再認証だったりするようです。
よくECサイトでの商品購入確定前にパスワード確認を行うなどといったことがあるが、そういった要件をID連携時にも満たせるように「10秒以内にログインしてなければ明示的にパスワードを聞いてくれ」といった要求を可能にしているのが、このauth_time(とそれを要求するためにAuthorization Requestに含めるmax_ageリクエストパラメーター)である。 https://www.buildinsider.net/enterprise/openid/connect
- 1
ご教授ありがとうございます。
そうしますと、基本的なことかもしれませんが、auth_time自体は認証サーバーから返却される値ではあっても、IDトークンが正しく取得できていればLINEログイン上は問題ないので、アプリ側で特に制御しないのであればmax_age自体をつけなければよい(つまりauth_timeを評価しなければよい)ということでしょうか?
http://openid-foundation-japan.github.io/openid-connect-core-1_0.ja.html max_age
OPTIONAL. Authentication Age の最大値. End-User が OP によって明示的に認証されてからの経過時間の最大許容値 (秒). もし経過時間がこの値より大きい場合, OP は End-User を明示的に再認証しなければならない (MUST). (max_age リクエストパラメータは OpenID 2.0 PAPE [OpenID.PAPE] の max_auth_age リクエストパラメータに相当する) max_age が指定された場合, 発行される ID Token は auth_time Claim を含まねばならない (MUST).
- 0
auth_time は user が認証を行った日時が返ってくるので、基本的には過去の日付になると思います。 またこちらは optional となっていてリクエスト次第では null になるようです。
auth_time Time when the End-User authentication occurred. Its value is a JSON number representing the number of seconds from 1970-01-01T0:0:0Z as measured in UTC until the date/time. When a max_age request is made or when auth_time is requested as an Essential Claim, then this Claim is REQUIRED; otherwise, its inclusion is OPTIONAL. (The auth_time Claim semantically corresponds to the OpenID 2.0 PAPE [OpenID.PAPE] auth_time response parameter.) https://openid.net/specs/openid-connect-core-1_0.html
日本語の記事ですとこちらが参考になります。 https://qiita.com/TakahikoKawasaki/items/8f0e422c7edd2d220e06#76-auth_time-%E3%82%AF%E3%83%AC%E3%83%BC%E3%83%A0
- 1