クライアントの権限と役割に関する情報をJWTに含める必要がありますか?
JWTトークンにそのような情報があると、有効なトークンが来るたびに非常に役立つため、ユーザーに関する権限に関する情報を抽出するのが簡単になり、データベースを呼び出す必要もありません。 しかし、そのような情報を含め、データベースで同じものをダブルチェックしないと、セキュリティの問題になりますか?
または、
上記のような情報はJWTの一部ではなく、データベースのみを使用してユーザーのアクセスロールとアクセス許可を確認する必要がありますか?
トークンにクレームを含める目的は、リソースと認証プロバイダーの間でそのような通信を行う必要がないようにすることです。
リソースは、トークンに有効な署名があることを確認し、コンテンツを信頼することができます。
秘密鍵が認証サーバーに秘密であると仮定すると、あなたは良いです。一部のプロバイダーは、リスクを軽減するためにキーを変更しています。
考えてみれば、リソースが認証サーバーにコールバックしてクレームを取得した場合。次に、基本的に、同様の信頼方法によって適切なサーバーと通信することを保証します。
私の経験では、すべてのシステムがいくつかの中心的な役割と権限データベースを使用している場合、それらすべてをJWTに追加できます。
ただし、このアプローチは、認証サーバー自体がトークンを受信して信頼するターゲットシステムについて何も認識していない場合、SSOシナリオではうまく機能しない可能性があります。
ユーザーの役割と権限は、完全にJWTトークンの受信者にあります。 SSO認証とJWTを、既に許可サブシステムが設定されているレガシーシステムに統合する場合に特に当てはまります。したがって、JWTに存在する必要があるクレームは1つ(ユーザーIDのクレーム)だけです。