web-dev-qa-db-fra.com

AspNet Core Identity - cookie non mis en production

J'ai une application Web .NET Core 2 et je veux utiliser l'identité ASP.NET pour authentifier mes utilisateurs. Sur .NET Core 1.x, mon code fonctionnait bien.

J'ai migré vers .NET Core 2 et l'authentification fonctionne lors de l'exécution locale dans Visual Studio. Mais lorsque je déploie dans un environnement en direct, l'authentification cesse de fonctionner: le cookie d'authentification n'est pas défini en production.

Mon code Startup.cs ressemble à ceci:

public void ConfigureServices(IServiceCollection services)
{
   services.AddIdentity<AppUser, RavenDB.IdentityRole>()
         .AddDefaultTokenProviders(); 

   ...
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
   ...

   app.UseAuthentication();
}

Pour vous connecter, mon code ressemble à ceci:

public async Task<ActionResult> SignIn(...)
{
   var user = ...; // Load the User from the database.
   await this.signInManager.SignInAsync(user, isPersistent: true);

   ...
}

Ce code fonctionne localement: le cookie d'authentification d'identité ASP.NET est défini. Toutefois, lorsque je déploie cette fonctionnalité dans l'environnement de production dans Azure, le cookie n'est jamais défini.

Qu'est-ce que je rate?

7

J'ai résolu le problème. Cela se résumait à HTTPS: il semble que signInManager.SignInAsync (...) définisse un cookie exclusivement HTTPS. Je publiais initialement sur un site non HTTPS à des fins de test.

Une fois que j'ai publié sur un site HTTPS, le cookie a recommencé à fonctionner.

La raison pour laquelle cela fonctionnait localement était que je courais en HTTPS localement.

9

Avait le même problème avec Chrome 60+. Cookie n'a pas voulu définir sur le site HTTP ou même HTTPS et Cordova.
options.Cookie.SameSite = SameSiteMode.None;
https://github.com/aspnet/Docs/blob/master/aspnetcore/security/authentication/cookie.md
Le passage de la valeur par défaut (Lax) à Aucune l'a corrigé pour moi.

1
aMerkuri