J'ai déjà le jeton dans la mémoire de stockage locale et prêt à être envoyé à l'API Web où le contrôleur ou la méthode a en Autoriser l'attribut au client Blazor.
var token = Storage["token"];
await http.GetJsonAsync<string[]>("/api/authorizedController");
Et comment puis-je recevoir le jeton sur l'API? Cela se produit-il automatiquement ou dois-je faire quelque chose?
[Authorize]
[Route("api/[controller]")]
Mate, vous avez également besoin d'un code sur le serveur pour valider le jeton du porteur dans l'en-tête de votre demande à chaque demande.
Essaye ça:
[Route("api/[controller]")]
[Authorize]
public class AutorizedController: Controller
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentityCore<IdentityUser>()
.AddEntityFrameworkStores<StoreContext>();
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(cfg =>
{
cfg.TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = true,
ValidIssuer = _config["Security:Tokens:Issuer"],
ValidateAudience = true,
ValidAudience = _config["Security:Tokens:Audience"],
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Security:Tokens:Key"])),
};
});
services.AddDbContext<StoreContext>();
services.AddMvc();
}