Dans mon API web de base Asp.Net, j'utilisais Identity avec l'authentification de support Jwt. Cela fonctionnait sans problème. Voici le code pour que,Dotnet core 2.0 Utilisation de l'identité avec l'authentification JwtBearer
ConfigureServices():
services.AddIdentity<ApplicationUser, IdentityRole<int>>()
.AddEntityFrameworkStores<DataContext, int>()
.AddDefaultTokenProviders();
Configurer():
app.UseJwtBearerAuthentication(new JwtBearerOptions()
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
TokenValidationParameters = new TokenValidationParameters()
{
ValidIssuer = "localhost:4200",
ValidAudience = "localhost:4200",
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SuperSecretKey_GetThisFromAppSettings")),
ValidateLifetime = true
}
});
Et aujourd'hui, je suis passé à .net 2.0 et core toute la technologie empiler. De l'aide limitée disponible là-bas je code modifié comme celui-ci ..
ConfigureServices()
services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddEntityFrameworkStores<DataContext>()
.AddDefaultTokenProviders();
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = "localhost:4200";
options.Audience = "localhost:4200";
options.RequireHttpsMetadata = false;
options.TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuerSigningKey = true,
ValidateIssuer = true,
ValidateLifetime = true,
ValidIssuer = "localhost:4200",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SuperSecretKey_GetThisFromAppSettings"))
};
});
Configurer()
app.UseAuthentication();
Maintenant, l'authentification ne fonctionne pas. On dirait qu'il est configuré en interne pour utiliser l'authentification par cookie.
Est-ce que quelqu'un d'autre est tombé sur ce scénario? Toute aide à ce sujet est vraiment appréciée!
Merci,
Hey, ça a marché! et merci beaucoup. Mais j'ai une autre question. Savez-vous comment arrêter la redirection par défaut vers la page de connexion lors d'un accès non autorisé? Au lieu de redirection, j'ai besoin d'envoyer le code d'état http au client. – Wijitha
Pas de problème, je suppose qu'il existe de meilleurs moyens, mais parce que vous utilisez Identity et CookieAuthentication comme un schéma de 2ème autorisation, vous pouvez utiliser le chemin de connexion, car il retombe sur lui. services.ConfigureApplicationCookie (options => { options.LoginPath = "/ somecontr/somefunc"; }); et renvoyez tout ce dont vous avez besoin. public IActionResult somefunc() retourne StatusCode (418) –