ClaimsAuthenticationManager vs. IAuthenticationFilter vs. OWIN Forms Authentication

.NET 4.5, MVC 5: claims-AuthenticationManager, IAuthenticationFilter, OWIN Forms Authentication, and claims-principals are all new since I last touched my site's authentication functions. J'ai trouvé un manque de clarté dans toutes les docs que dire ou est le bon chemin. Je ne sais même pas quelles caractéristiques sont mutuellement exclusives.

ce document dit le vieux ASP.NET FormsAuthenticationModule ne supporte pas les revendications, mais le nouveau OWIN ne supporte pas soutien cookieless. Pourtant, j'ai l'impression que OWIN est prévu à l'avenir?

  1. la feuille de route du produit indique-t-elle Quelle méthode est la bonne pour les applications web?
  2. est-ce que ClaimsAuthenticationManager est synonyme de OWIN Forms Authentication for web apps?
  3. les claims AuthenticationManager et a global IAuthenticationFilter s'excluent-ils mutuellement?

Un coup de pouce dans la bonne direction serait appréciée, mon cerveau est frit.

14
demandé sur shannon 2013-12-15 14:19:32

2 réponses

IAuthenticationFilter

précédemment dans MVC,IAuthorizationFilter était un endroit commun pour effectuer l'authentification personnalisée. Le raisonnement pour ce filtre peut être vu dans le scénario où une application a deux spécifications d'autorisation, et une seule spécification d'authentification. Deux options-Ajouter la spécification d'authentification à une seule routine d'autorisation arbitraire, et créer ces trois spécifications comme distinctes IAuthorizationFilter - les deux signifient que nous ne nous assurons pas que l'authentification se fait d'abord.

IAuthenticationFilter a été ajouté à l'origine à L'assemblage MVC pour résoudre ce problème, puis déplacé pour être utilisé par WebAPI aussi. Un bon article connexe peut être trouvé ici;ASP.NET filtres de sécurité de L'API Web.

à proprement parler, IAuthenticationFilter et L'authentification OWIN ne sont pas mutuellement exclusives, mais L'authentification OWIN se produit d'abord et peut gêner toute intention d'utiliser les deux.

formulaires OWIN L'authentification

OWIN forms authentication est une phrase confuse que j'ai tirée de la lecture d'un article mal formulé (lien ci-dessus). Il s'agit de deux éléments de solution non dépendants:

l'aspect "Forms" de la solution fonctionne toujours de la même façon que pour L'authentification Forms auparavant. C'est une conséquence d'un échec d'autorisation (comme celui qui se produit à partir d'un [Authorize] attribut ouweb.config<authorization> element) couplé avec une redirection vers un formulaire de gestionnaire de connexion. (Votre choix de technologie déterminera où vous configurerez cette URL de redirection. Pour OWIN, vous le configurerez en CookieAuthenticationOptions.)

l'aspect" OWIN " est plus pertinent à la confusion qui a motivé mon OP. Je ne vais pas entrer dans les détails sur OWIN en général, car il est censé faire beaucoup plus que l'authentification; entièrement découplage ASP.NET de IIS (via OWIN), il en résulte beaucoup de pour et de contre, mais MVC6 est construit exclusivement sur OWIN donc il est ici pour rester.

Spécifiques à Authentification, modules actuels comme le ASP.NET les fournisseurs d'authentification externes (Facebook / Google Social login) dépendent D'OWIN. Si vous écrivez ASP.NET authentification web la façon "normale" vous utiliserez OWIN. C'est un avantage de l'authentification via OWIN.

auparavant, le login social se produisait d'une façon plus concise comme redirection et un MessageHandlerOAuthWebSecurity. OWIN fournit un mécanisme à la fois pour rediriger et traiter le fournisseur d'authentification de rappel; lire Création d'un Custom OAuth Middleware pour MVC 5 pour plus d'informations.

ClaimsAuthenticationManager

ClaimsAuthenticationManager n'est pas vraiment ce que cela ressemble. Il s'agit en fait d'un aspect de la fin d'un processus d'authentification qui a déjà été effectué par La Windows Identity Foundation (WIF). Il est destiné à transformer la Réclamation produite par ce processus pour répondre à vos attentes personnalisées. Par exemple, la liste des revendications peut inclure nom d'utilisateur, à partir duquel vous pouvez chercher à partir d'une base de données rôles fréquemment consultés ou des droits, et ajouter ces derniers à la liste de revendications pour des raisons de performance.

il est applicable partout où WIF est utilisé. Par rapport au courant ASP.NET applications web, cela signifie OWIN.

Sommaire

Oui. Vous utiliserez probablement OWIN, WIF, et des cookies dans votre ASP.NET Web app. Juste quelque chose à accepter si vous utilisez les "matériaux encadrés", avec la mort de Les formulaires web et VB.NET dans cette version.

donc, puisque vous allez probablement faire l'authentification OWIN, voici une excellente série sur le sujet; C'est quoi cette histoire avec Owin?

4
répondu shannon 2015-04-10 23:14:14

OWIN est plus d'une plus grande portée de minimiser la pile pour servir les pages web et minimiser la pile est la nouvelle vague du futur(noeud ala.js). "OWIN authentification middleware" est ce que vous vous référez et Brock Allen états, mieux ici:

http://brockallen.com/2013/10/24/a-primer-on-owin-cookie-authentication-middleware-for-the-asp-net-developer/

avec .NET 4.5.1, pour ASP.NET applications, tout le code sous-jacent qui gère les "comptes D'utilisateurs individuels" (ainsi que les modèles Visual Studio 2013) est nouveau. Cela signifie pour l'authentification basée sur les cookies nous n'utilisons plus l'authentification de formulaires et pour l'identité externe fournisseurs nous n'utilisons plus DotNetOpenAuth.

le remplacement est un framework appelé OWIN authentication middleware et c'est le ciblage de la OWIN API. Je n'ai pas l'intention de motiver OWIN ici. (voilà un bon article sur le sujet), mais bref, c'est une abstraction API pour le web hôte. De nombreux cadres tels que L'API Web et SignalR (comme ainsi que d'autres cadres non-Microsoft) sont codés à cette abstraction ils n'ont donc pas besoin d'un serveur web particulier (comme IIS).

3
répondu Domin8urMind 2014-05-06 04:53:54