アクセストークンを使うことなく、HS256署名されたIDトークンを解析する
エラーメッセージ :HS256署名アルゴリズムで署名され、アプリケーション(ブラウザーなど)がシークレットを保管できないため、IDトークンを検証できません。原因
auth0.jsバージョン9 および Lockバージョン11 以降、HS256で署名されたIDトークンは破棄され、ユーザー情報の取得には/userinfo
が呼び出されます。
/userinfo
の呼び出しにはアクセストークンが必要です。認証でアクセストークンを要求しない場合には、次のエラーメッセージを受け取ります:
The id_token cannot be validated because it was signed with the HS256 algorithm and public applications (like a browser) can’t store secrets.Please read the associated doc for possible ways to fix this.
(HS256で署名され、公開アプリケーション(ブラウザーなど)がシークレットを保管できないため、このトークンは検証できません。可能性のある修正方法については、関連するドキュメントをお読みください。)
修正
このエラーを修正するには次の2つの方法があります。- (推奨) アプリケーションの署名アルゴリズムをHS256ではなく、RS256に変更します。
responseType
パラメーターの値を(デフォルトではなく)token id_token
に変更して、応答でアクセストークンを受け取るようにします。
- [Auth0 Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動し、アプリケーションの名前を選択して表示します。
- [Settings(設定)] ページの下までスクロールし、[Show Advanced Settings(詳細設定を表示)] を選択します。
- [OAuth] を選択して、[JsonWebToken Signature Algorithm(JSON Web Token署名アルゴリズム)] の値を [RS256] に変更し、[Save Changes(変更の保存)] を選択します。