署名アルゴリズム

署名アルゴリズムとは、アプリケーションまたはAPIに対して発行されたトークンに署名するアルゴリズムです。署名はJSON Webトークン(JWT)の一部で、トークンの送信者が自称のとおりであることを検証し、メッセージが途中で変更されていないことを保証するために使用されます。

署名アルゴリズムは以下から選べます。

  • RS256(SHA-256を持つRSA署名):公開鍵暗号方式で、公開鍵と秘密鍵の2つがあり、後者は秘密にしておかなくてはなりません。署名の生成に使う秘密鍵は、Auth0が持っていて、JWTのコンシューマーは、Auth0が提供するメタデータエンドポイントから公開鍵を取得しJWT署名の検証に使用します。

  • HS256(SHA-256を持つHMAC):共通鍵暗号方式で、非公開の秘密鍵が1つあるのみです。両当事者がこの鍵を共有します。同じ鍵が署名の生成と検証に使用されるので、鍵が解読されないように細心の注意を払う必要があります。この秘密鍵(シークレット)は、アプリケーション(クライアントシークレット)またはAPI(署名シークレット)を登録してHS256署名アルゴリズムを選択すると作成されます。

  • PS256(SHA-256を持つRSA署名):公開鍵暗号方式で、公開鍵と秘密鍵の2つがあり、後者は秘密にしておかなくてはなりません。署名の生成に使う秘密鍵は、Auth0が持っていて、JWTのコンシューマーは、Auth0が提供するメタデータエンドポイントから公開鍵を取得しJWT署名の検証に使用します。RS256とは異なり、同じJWTヘッダーとペイロードは毎回異なる署名を生成します。

最も安全で、当社が推奨するのはRS256の使用です。理由は:

  • RS256では、秘密鍵の所有者(Auth0)のみがトークンに署名できる一方、誰でも公開鍵を使ってトークンの有効性を確認できます。

  • RS256では、秘密鍵が解読されたとしても、新しいシークレットでアプリケーションやAPIをデプロイし直すことなく、鍵のローテーションを実施できます(HS256では再デプロイが必要)。

トラブルシューティングのヘルプが必要な場合は、「無効なトークンエラーのトラブルシューティング」を参照してください。

もっと詳しく