web-dev-qa-db-ja.com

Web Api Controller(.Net Core 2.1)でクレームとサブスクリプションを取得する

.Net Core 2.1でJWTを使用しています。

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]

コントローラクラスのデコレータ。 2.0では、次のようなことをしなければならなかったように見えましたが、今では時代遅れとしてマークされています。

var authenticateInfo = await HttpContext.Authentication.GetAuthenticateInfoAsync("Bearer");
string accessToken = authenticateInfo.Properties.Items[".Token.access_token"];

私は避けたいと思う許可クラスなどを拡張する他のかなり遠回りの方法を見てきました。トークンの詳細、たとえば.Sub、および追加したカスタムクレーム(「名前」や「ロール」など)にアクセスしたいだけです。 .Net Core 2.1でこれを行う方法は?

7
Glinkot

キャストしてみてくださいHttpContext.User.Identity as ClaimsIdentity

claimsIdentity = User.Identity as ClaimsIdentity;

// alternatively
// claimsIdentity = HttpContext.User.Identity as ClaimsIdentity;

// get some claim by type
var someClaim = claimsIdentity.FindFirst("some-claim");

// iterate all claims
foreach (var claim in claimsIdentity.Claims)
{
    System.Console.WriteLine(claim.Type + ":" + claim.Value);
}

以下に、。NET CoreHttpContext.User.Identityプロパティ。

10
Shaun Luttin