Angular2SPAを使用してASP.NETWebAPIアプリケーションにJWTベースの承認を実装しています。1つの詳細を除いて、承認フローに関してはすべてが明確です。Web APIコントローラーアクション内でJWTペイロード情報を取得する方法を知りたいですか?
ウェブを見てみると、たとえば設定Thread.Principal
など、自分が求める解決策が見つかりません。
それを達成するための推奨される方法は何ですか?
ASP.NETで認証としてJWTトークンを処理する通常のプロセスは次のとおりです。
これは、トークン内のペイロード情報が、通常はクレームの形式でリクエストプリンシパルを介して利用できることを意味します。たとえば、JWTにユーザーロールに関する情報が含まれている場合、プリンシパルで使用可能なロールクレームにマッピングされます。
OWINを使用しているかどうかについては言及していないので、例としてOWINを想定しますが、コントローラーレベルではそれほど重要ではなく、大きく異なるはずです。
データ消費の部分のみに関心があるという事実にもかかわらず、興味がある場合は、ASP.NET Web API(OWIN)に関するこの一連のチュートリアルを読んで、プロセス全体をより詳細に調べることができます。
最後のものが最も関心を持つものであろうあなたが1つに次のコードスニペットに注意しましょう:
[HttpGet]
[Authorize]
[Route("claims")]
public object Claims()
{
var claimsIdentity = User.Identity as ClaimsIdentity;
return claimsIdentity.Claims.Select(c =>
new
{
Type = c.Type,
Value = c.Value
});
}
これはUser.Identity
、現在認証されているIDのすべてのクレームを一覧表示するために、コントローラー内で使用可能なものに依存しています。通常の認証パイプラインとはかなり異なる構成の認証パイプラインがない限り、これらのクレームはAPIが受け取るJWTペイロードからマッピングされます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加