Skip to main content

アクセストークンなしでHS256署名のIDトークンを解析する

エラーメッセージ: は HS256 アルゴリズムで署名されており、公開クライアント (ブラウザーなど) ではシークレットを保存できないため、検証できません。

原因

auth0.js バージョン 9 および Lock バージョン 11 以降では、IDトークンが 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.

修正方法

このエラーを修正する方法は 2 つあります。
  1. (推奨) アプリケーションの署名アルゴリズムを HS256 ではなく RS256 に変更します。
  2. responseType パラメーターの値を token id_token に変更します (デフォルト値ではなく) 。これにより、レスポンスでアクセストークンを受け取れます。
アプリケーションの署名アルゴリズムを HS256 ではなく RS256 に変更するには、次の手順を実行します。
  1. Auth0 Dashboard > Applications > Applications に移動し、対象のアプリケーション名を選択します。
  2. Settings ページの一番下までスクロールし、Show Advanced Settings を選択します。
  3. OAuth ビューを選択し、JsonWebToken Signature Algorithm の値を RS256 に変更して、Save Changes を選択します。
この方法を選択し、API の呼び出しに IDトークンを使用している場合は、HS256 ではなく RS256 アルゴリズムでトークンを検証するようにサーバーコードを必ず変更してください。なお、API の呼び出しに IDトークンを使用することは推奨されません。 JWT Tool を使用すると、 をデコード、検証、生成できます。