2 votes

ASP.NET Core, MVC et OWIN

Je suis en train de migrer une ancienne application vers ASP.NET core/MVC. Cette application utilise certains middlewares OWIN pour gérer l'authentification.

Les middlewares fonctionnent parfaitement lorsqu'ils sont enregistrés en utilisant "UseOwinAppBuilder", cependant, dans certaines parties de l'application, j'ai besoin d'obtenir le "contexte Owin" pour pouvoir travailler avec l'authentification. Le "vieil" code fait quelque chose comme:

var context = Request.GetOwinContext();
var authentication = context.Authentication.AuthenticateAsync("AuthScheme");

Je sais qu'en ASP.NET core je peux gérer l'authentification en utilisant HttpContext.Authentication.AuthenticateAsync, mais si je remplace la ligne précédente par

var authentication = HttpContext.Authenticaiton.AuthenticateAsync("AuthScheme");

Je reçois une erreur:

"Aucun gestionnaire d'authentification n'est configuré pour authentifier le schéma : AuthScheme"

Je soupçonne que l'erreur se produit parce que les middlewares d'authentification ont été enregistrés en utilisant OWIN et non dans ASP.NET Core.

Je sais qu'il existe certains objets qui permettent de créer un "OwinEnvironment" et d'accéder à une "OwinFeatureCollection", mais je ne suis pas sûr que ce soit la manière d'accéder au "vieil" contexte Owin (et je ne trouve pas de documentation détaillée sur le fonctionnement de ces objets).

En résumé : y a-t-il un moyen d'accéder au "vieil" contexte Owin dans ASP.NET Core afin de gérer l'authentification avec les middlewares enregistrés ?

0voto

En fonction du middleware d'authentification que vous utilisez, vous voudrez peut-être vérifier votre fichier Startup.cs pour vous assurer que le paramètre du schéma d'authentification est correct.

Par exemple, si vous utilisez le middleware d'authentification par cookie dans ASP.NET Core...

var testOptions = new CookieAuthenticationOptions()
{
     AutomaticAuthenticate = true,
     AutomaticChallenge = false,
     SessionStore = new CacheTicketStore(cache),
     AuthenticationScheme = "AuthScheme"
};
app.UseCookieAuthentication(testOptions);

Si vous utilisez l'authentification par jeton JWT, vous verriez quelque chose comme ceci...

app.UseJwtBearerAuthentication(new JwtBearerOptions
{
    // authority and app id settings omitted
    AuthenticationScheme = "AuthScheme"
});

Les middlewares d'authentification viennent également généralement avec des constantes bien connues, vous pouvez donc utiliser la valeur par défaut de ce fournisseur.

using Microsoft.AspNetCore.Authentication.Cookies;
...
context.Authentication.AuthenticateAsync(CookieAuthenticationDefaults.AuthenticationScheme);

Si votre middleware d'authentification est simplement configuré avec app.UseMagicAuthentication(), vous pouvez vérifier s'il prend des options en argument.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X