メインコンテンツへスキップ

概要

Authlete 2.0 以降ではクライアントタイプおよびクライアント認証方式の設定値の検証がより厳密になり、Authlete 1.1では許容されていたリクエストを拒否するように変更されました。

変更点

具体的な変更点は下記の通りです。
Authlete 1.1Authlete 2.0 以降
設定値の扱いクライアントタイプ、クライアント認証方式の設定値の如何に関わらず、トークンリクエスト時にクライアントシークレットが含まれていれば、その値を検証する。
トークンエンドポイントにおいて、client_id が指定されていないリクエストでも、認可コードやリフレッシュトークンの値から client_id を導出し動作する。 | クライアントタイプ、クライアント認証方式の設定値によって振る舞いが異なる。
  • A. クライアントタイプが public の時クライアント認証方式は NONE でなければならない。
  • トークンエンドポイントにおいて client_id が指定されていないとエラーとなる。また、client_secret 等の不必要なパラメーターが含まれていてもエラーとなる。
  • B. クライアントタイプが confidential の時
  • クライアント認証方式は NONE 以外の値でなければならない。
  • クライアント認証方式が client_secret_basic の時、クライアントシークレットがリクエストの Authorization ヘッダーに含まれていなければエラーとなる。
  • クライアント認証方式が client_secret_post の時、クライアントシークレットがリクエストボディに含まれていなければエラーとなる。 | | デフォルト設定値 | クライアントタイプ: public
    クライアント認証方式: client_secret_basic | クライアントタイプ: public
    クライアント認証方式: none |

 Authlete 1.1 から 2.0 への移行時の注意点

Authlete 1.1 では、設定されたクライアント認証方式が client_secret_basic であったとしても、トークンリクエストのリクエストボディにクライアントシークレットが埋め込まれていた場合には、その値を検証します。 一方 Authlete 2.0 では、client_secret_basic として設定されている場合には Authorization ヘッダーにクライアントシークレットが含まれていることが必須となります。したがって上記のような、Authlete 1.1 では許容されていたリクエストについては、エラーが返却されることになります。 具体的には、下記のポイントに注意の上、設定を変更してください。

クライアントがパブリッククライアントの場合

  • サービス側の設定にて、サポートするクライアント認証方式に「NONE」が含まれていることを確認する。
  • クライアント側の設定にて、  クライアント認証方式が「NONE」になっていることを確認する。
  • クライアントからのトークンリクエスト中に client_id が含まれていることを確認する。

クライアントがコンフィデンシャルクライアントの場合

  • サービス側の設定にて、サポートするクライアント認証方式が正しく設定されていることを確認する。
  • クライアント側の設定にて、クライアント認証方式が正しく設定されていることを確認する。
  • Authlete の /auth/token API をコールする際に、適切なパラメーターが設定されていることを確認する。