Mise à niveau de l'application World Trip de Scott Wildermuth vers ASP.NET Core 2.0. Le code ci-dessous ne fonctionne pas.L'authentification par cookie ne fonctionne pas avec la politique d'autorisation dans le noyau asp.net
Étant donné que j'utilise deux types d'authentification et que j'aimerai que les deux fonctionnent sur les contrôleurs api, j'ai décidé d'utiliser la politique d'autorisation.
public void ConfigureServices(IServiceCollection services)
{
//Some codes here
services.AddAuthentication()
.AddCookie()
.AddJwtBearer(**Implementation is fine**);
services.AddAuthorization(options =>
{
options.AddPolicy("Authenticated", policy =>
{
policy.AddAuthenticationSchemes(
CookieAuthenticationDefaults.AuthenticationScheme,
JwtBearerDefaults.AuthenticationScheme)
.RequireAuthenticatedUser();
});
});
}
maintenant dans mes contrôleurs,
namespace TheWorld.Controllers.Api
{
[Route("api/trips")]
[Authorize(policy: "Authenticated")]
public class TripsController : controller
{
// Implementation is fine
}
}
Les demandes à venir avec l'authentification par cookie du client (web) est jamais vu comme authentifié tandis que les demandes de Jwt clients authentifiés fonctionnent comme prévu.
Cela fonctionne uniquement avec l'authentification par cookie si j'utilise le [Authorize]
simple sur le contrôleur, dans lequel asp.net core choisit simplement l'authentification de cookie par défaut et n'accepte jamais les demandes des clients Jwt.
Merci @poke. J'ai déjà essayé ce que vous avez mentionné et ce qui s'est passé dans ce cas était que 'CookieAuthentication' a été choisi par défaut et' JwtBearer' n'a jamais été utilisé. Merci. –
Merci @poke. J'ai finalement découvert que le problème venait de 'AspNetCore.Identity'. La valeur par défaut 'AuthenticationScheme' qui l'accompagnait utilisait le nom du schéma' "Identity.Application" '. Ainsi, l'application a fonctionné après que j'ai changé 'CookieAuthenticationDefaults.AuthenticationScheme' à' "Identity.Application" 'avec ou sans un appel à' .AddCookie' sur 'services.AddAuthentication'. –