Page de connexion sur les différents domaine
Je suis complètement nouveau pour OWIN d'authentification, et je dois être l'incompréhension comment tout fonctionne, mais je ne trouve pas cette mentionné nulle part.
Tout ce que je veux, c'est être en mesure d'utiliser un domaine central pour l'authentification. Si quelqu'un tente d'accéder à apps.domain.com
lorsqu'il n'est pas authentifié, ils seront redirigés vers accounts.domain.com/login
de sorte que tous l'authentification est séparé dans son propre domaine d'application. Cela a été très facile avec MVC 4 l'authentification par formulaires, où vous pouvez spécifier une URL complète, mais ne semble pas être avec OWIN.
Dans Startup.Auth.cs
:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
LoginPath = new PathString("/account/login")
}
Il est facile de spécifier le domaine lors de la configuration du témoin avec le CookieDomain
option. Toutefois, lorsque vous spécifiez la connexion de chemin de redirection, il doit être relatif à l'application en cours, alors comment puis-je aller sur la réalisation de ce qui a été si facile MVC 4 formes d'authentification?
Sans entrer trop profondément dans ce OWIN authentification est tout au sujet, je ne pouvais pas trouver quelque chose aborder cette après quelques heures de recherche.
Vous devez vous connecter pour publier un commentaire.
Si apps.domain.com est la seule déclaration de l'URL de base du possible, il est fortement recommandé de remplacer
context.Request.Uri.AbsoluteUri
aveccontext.Request.PathBase + context.Request.Path + context.Request.QueryString
et générer un rendement absolu URL dans votre serveur d'authentification pour protéger vos applications de abusif de redirections.Espère que cette aide 😉
MODIFIER: vous pourriez vous demander pourquoi je n'ai pas l'appliquer directement la redirection à l'aide de la
context.RedirectUri
de la propriété. En fait,ICookieAuthenticationProvider.ApplyRedirect
est responsable de plusieurs redirections, correspondant à l'ouverture de session et de la session des flux (oui, je sais, ça casse le principe de responsabilité unique...). Mais il y a pire encore:context.RedirectUri
peut soit représenter l'authentification du système d'extrémité URL absolue dans le début du journal de débit ou de la finale du navigateur de destination (c'est à dire. le vrai parent "URL de retour") lorsque le cookie est effectivement envoyée au navigateur... c'est pourquoi nous devons nous assurer quecontext.RedirectUri
est absolue et correspond au siège socialcontext.Options.LoginPath
.Je suis en train de travailler à travers les exemples de https://github.com/IdentityServer/IdentityServer3 et j'ai une réponse différente. Dans l'exemple à https://www.scottbrady91.com/Identity-Server/Identity-Server-3-Standalone-Implementation-Part-2 ils montrent un MVC application qui utilise autonome, les personnes déplacées et les cookies d'authentification. L'exemple n'est pas incluse obtenir 401 redirections de travail, mais je suis tombé sur une voie.
Le régime de base est de créer une action dans le AccountController pour la connexion.
Maintenant, vous avez une URL locale qui peut être utilisé dans le Démarrage
Vous avez également l'avantage supplémentaire que vous pouvez mettre un lien d'action pour la SignIn sur la barre de menu, pour les personnes qui veulent se connecter avant il y a un 401. Ce que nous avons fait ici est découplée de la décision de quoi faire quand un unathenticated utilisateur demande une ressource à partir de la façon dont l'authentification est obtenu.
ApplyRedirect
avec une logique personnalisée.