web-dev-qa-db-fra.com

Obtenez des réclamations et un abonnement dans Web Api Controller (.Net Core 2.1)

J'utilise JWT avec .Net Core 2.1 et le

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]

décorateur de ma classe de contrôleur. En 2.0, il semblait que vous deviez faire quelque chose comme ceci, mais il est maintenant marqué comme obsolète:

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

J'ai vu d'autres méthodes assez détournées d'extension des classes d'autorisation et autres que je préfère éviter. Je veux simplement accéder aux détails du jeton comme je les avais encodés, par exemple le .Sub, et les revendications personnalisées que j'ai ajoutées comme "Nom" et "Rôles". Comment faire dans .Net Core 2.1?

7
Glinkot

Essayez de diffuser HttpContext.User.Identity comme 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);
}

Voici les documents spécifiques . NET Core qui prennent en charge le HttpContext.User.Identity propriété.

10
Shaun Luttin