Skip to main content
Implicit Flow with Form Post の使用時にリプレイ攻撃を軽減するには、OpenID Connect (OIDC) 仕様で規定されているとおり、認証リクエストで を送信する必要があります。 nonce はアプリケーションで生成され、認証リクエストの nonce クエリ文字列パラメーターとして送信され、Auth0 から返される レスポンスに含まれます。これにより、アプリケーションは Auth0 からの ID トークンレスポンスを初回認証リクエストに対応付けることができます。 nonce をどこに含めるかについて詳しくは、Form Post を使用する Implicit Flow で Login を追加する を参照してください。
Auth0.js は、クロスオリジン認証 を使用する際に state パラメーターと nonce パラメーターを自動的に管理します。

暗号学的にランダムな nonce を生成する

暗号学的にランダムな nonce を生成する方法の1つとして、Nano ID のようなツールや、それに類するものを使う方法があります。ただし、その場合はそのツールを JavaScript コードにバンドルする必要があります。それが難しい場合は、最新のブラウザー では Web Crypto API を使って、nonce として使える暗号学的に安全なランダム文字列を生成できることを活用できます。

リクエスト間で nonce を保持する

生成された nonce は、次のいずれかの方法でウェブアプリに保持する必要があります。
  • HttpOnly
  • HTML5 のローカルストレージの値
たとえば:

ID トークンを検証する

Auth0 から ID トークン が返されたら、このトークンを通常どおり検証してデコードする必要があります。 nonce クレームには、request で送信したものと完全に同じ値が含まれていなければなりません。 そうでない場合、アプリケーションは認証を拒否する必要があります。

詳しくはこちら