HTTPヘッダーでJWTトークンを使用して、リソースサーバーへのリクエストを認証しています。リソースサーバーと認証サーバーは、Azureの2つの独立したワーカーロールです。
トークンにクレームを保存するか、他の方法で要求/応答に添付するかについて、思いを固めることはできません。クレームリストは、サーバー上のデータへのアクセスだけでなく、クライアント側のUI要素のレンダリングにも影響します。このため、サーバーで受信したクレームが本物であり、リクエストが処理される前に検証されていることを確認したいと思います。
クレームの例:CanEditProductList、CanEditShopDescription、CanReadUserDetails。
JWTトークンを使用したい理由は次のとおりです。
- クレームのクライアント側編集に対するより良い保護(クレームリストのハッキング)。
- リクエストごとにクレームを調べる必要はありません。
JWTトークンを使用したくない理由:
- 次に、認証サーバーはアプリ中心のクレームリストを知る必要があります。
- トークンは、ハックエントリの単一ポイントになります。
- JWTトークンはアプリレベルのデータ用ではないことをいくつか読みました。
どちらにも欠点があるように思えますが、これらの主張をトークンに含めることに傾倒しており、これを以前に扱った人によって実行したいだけです。
注:すべてのAPIリクエストにHTTPSを使用するため、トークンは「十分」に安全であると思われます。私はAngularJS、C#、Web API 2およびMVC5を使用しています。