2010-03-08 4 views
3

Je suis actuellement en train de jouer avec DotNetOpenAuth pour qu'un site Web ASP.NET (C#) utilise OpenID au lieu de la routine habituelle de login-password pour la gestion des utilisateurs et des sessions.Gestion de session et liaison de comptes utilisateur avec OpenID, dans ASP.NET

Jusqu'à présent, j'ai ajouté le DotNetOpenAuth.dll dans mon projet et essayé une page de connexion de test avec les éléments suivants:

<rp:OpenIdLogin ID="OpenIdLogin1" runat="server" /> 

Quand je lance la page, j'entrer une URL MyOpenID valide et le site redirige vers la page MyOpenID, où je rentre mon mot de passe, et sur le succès, il retourne à mon default.aspx, en raison de ce qui suit dans mon web.config:

<authentication mode="Forms"> 
    <forms defaultUrl="/Default.aspx" loginUrl="~/Login.aspx"/> 
</authentication> 

maintenant que l'utilisateur est « connecté », comment gérer mon session? Pour l'instant, je ne sais pas comment je peux, par exemple, vérifier si la session est encore en vie ou comment terminer la session.

Ma question de base est, comment puis-je gérer la session une fois que l'utilisateur est authentifié avec OpenID?


[Mise à jour]

J'utilise maintenant ce qui suit pour vérifier l'authentification: HttpContext.Current.User, et que je peux maintenant vérifier si un utilisateur est authentifié par une session.

Maintenant, existe-t-il un moyen possible de "lier" les informations utilisateur stockées dans ma base de données avec un compte OpenID?

Répondre

3

Les connexions OpenID avec le contrôle OpenIdLogin ne sont (par défaut) pas différentes d'un nom d'utilisateur + mot de passe du point de vue d'ASP.NET. Comme vous l'avez découvert, HttpContext.Current.User est défini sur chaque requête HTTP entrante basée sur un cookie HTTP que ASP.NET FormsAuthentication envoie au navigateur afin de maintenir la cohérence de la session entre la demande et la demande. Lorsque vous êtes dans une page ou dans son code, la propriété Page.User est un moyen encore plus pratique. Mais si vous faites un contrôle d'accès, plutôt que de vérifier s'il y a un utilisateur connecté sur chaque page, il est préférable d'utiliser la balise <authorization> dans votre fichier web.config pour forcer l'utilisateur à se connecter avant d'accéder à certaines pages ou répertoires de pages.

En ce qui concerne la liaison des détails de l'utilisateur, la clé que vous voulez associer aux détails de vos utilisateurs est l'identifiant OpenID Claimed Identifier, que OpenIdLogin attribue automatiquement à la valeur Username de FormsAuthentication. Ainsi, vous pouvez récupérer ou stocker les détails de l'utilisateur dans votre base de données en fonction de la valeur HttpContext.Current.User.Identity.Name, qui sera la valeur unique fiable et éprouvée pour chaque utilisateur.

Questions connexes