8
votes

Comment configurer DotNetOpenid dans une session moins d'équilibrage de la charge

Vous avez probablement résolu cela avant.

Je dois pouvoir utiliser l'identifiant ouvert dans un environnement qui n'a pas de session collant. Les serveurs conservent les en-têtes.

J'utilise ASP.NET MVC et DOTNETOPENID version 3.2.0.9177. Bien que l'authentification sur le site Web tiers se passe sans attelage lors du retour de la réponse, je reçois une erreur et une authentification échoue.

Toutes les pensées?


0 commentaires

3 Réponses :


1
votes

Utilisation de DotNetOpenid, vous devriez pouvoir persister l'état dont vous avez besoin lors de l'authentification du client via un cookie.

EDIT: Je n'ai aucun exemple de code pour cela, car je n'ai jamais eu à utiliser DotNetOpenid dans un environnement sans session, mais je voudrais vérifier ce lien, cela peut fournir le Informations dont vous avez besoin: http://code.google.com/p/dotNetopenid/wiki/ Webfarmhowto


2 commentaires

J'ai utilisé quelque chose de similaire pour tenir quelque chose dans Tempdata, mais tous les exemples de code pour le dotNetopénide? Je ne le connais pas encore. Merci


Je n'ai pas d'exemples de code à la main, mais vérifiez le lien que j'ai fourni.



6
votes

étatful

La méthode la plus optimisée consiste à écrire un magasin de persistance personnalisé qui implémente IrelyingPartyApplicationStore pour les "secrets" que OpenID RPS nécessite et transmettez votre instance sur le OpenidyryingParty (IrelyingPartyApplicationStore) Constructeur ou enregistrez-le dans votre fichier web.config .

apatride

Une solution beaucoup plus facile qui suffira à la plupart des scénarios est d'utiliser le mode apatride à la place, de sorte qu'aucun État n'a besoin d'être partagé sur les serveurs de votre web Farm.

Vous pouvez activer le mode apatride en instanciant OpenidyrelingParty Passage null dans l'instance de votre magasin d'applications. Appeler le constructeur par défaut provoquera l'utilisation de son magasin en mémoire dans la mémoire, ce qui se casse sur les fermes du serveur. Le constructeur par défaut est donc insuffisant.

ou si vous utilisez les contrôles ASP.NET, définissez simplement apatride = true sur le contrôle.


1 commentaires

Merci. La partie apatride semble l'avoir réparé.



5
votes

Voici comment nous activons le mode apatride:

var uri = new Uri(Request.Url, Request.RawUrl);
var openid = new OpenIdRelyingParty(null, uri, 
             Request.HttpMethod == "GET" ? Request.QueryString : Request.Form);


2 commentaires

Ce constructeur de trois paramètres est approprié pour DotNetOpenid 2.x, tandis que le constructeur de paramètres unique pour le mode apatride convient à DotNetOpenauth 3.x.


Merci M. coding horreur / un des créateurs-de-Stackoverflow. Je vais l'essayer lundi matin.