Q&A

IDトークンの署名アルゴリズムの公式ドキュメントと実物の差異について

前提・実現したいこと

LIFFのSDKを利用してフロントエンドでIDトークンを取得し、APIリクエストのヘッダにIDトークンを含め、 バックエンドでIDトークンからユーザIDを取得しようとしています。

発生している問題

公式ドキュメント(https://developers.line.biz/ja/docs/line-login/integrate-line-login/#verify-id-token) では、 署名アルゴリズムは、「HMAC SHA-256のみを利用している」、という記述ですが、 実際に取得したIDトークンのヘッダをデコードして確認すると、ES256(ECDSAの256bits)が利用されているようです。

確認したいこと

署名検証の実装をしたいのですが、LINEログインでは、 実物で利用されている署名アルゴリズム(ES256)のみを利用している、認識で良いのでしょうか。

  • 1
  • 2
  • 197
  • twitter facebook

同じ問題を抱えています。 ES256だとチャネルシークレットを用いた検証ができません。

  • 0

先日、公式へ問い合わせたところ、検証を行う場合、 ES256でもHS256でも以下の/verifyのAPIを利用すれば検証可能と回答頂きました。 参考:https://developers.line.biz/ja/reference/line-login/#verify-id-token (ただ、私は以下で自前実装したので、上記方法は回答内容の確認がまだできておりません。。)

自前実装する場合は、 https://api.line.me/oauth2/v2.1/certs にアクセスすると取得できるJWKを用いて、 公開されているJWTライブラリで検証可能です。 ※公式見解として、この手法が問題ないかは、まだ回答をいただいておりません。回答いただけたら、こちらに追記しようと思います。

  • 0
本当によろしいですか? question.vm