So konfigurieren Sie dotNetOpenId in einer Umgebung ohne Lastausgleich

8

Sie haben das wahrscheinlich schon vorher gelöst.

Ich muss in der Lage sein, offene ID in einer Umgebung zu verwenden, die keine Session-Stickiness hat. Die Server behalten die Header bei.

Ich verwende ASP.NET MVC und dotNetOpenId Version 3.2.0.9177. Obwohl die Authentifizierung auf der Website von Drittanbietern ohne Probleme verläuft, wenn ich die Antwort zurückgebe, bekomme ich einen Fehler und die Authentifizierung schlägt fehl.

Irgendwelche Gedanken?

    
Mihai Lazar 04.09.2009, 13:11
quelle

3 Antworten

6

Stateful

Die am besten optimierte Methode besteht darin, einen benutzerdefinierten Persistenzspeicher zu schreiben, der IRelyingPartyApplicationStore für die "Secrets" implementiert, die OpenID RPs benötigen, und Ihre Instanz an den OpenIdRelyingParty(IRelyingPartyApplicationStore) -Konstruktor weiterzugeben oder ihn in Ihrem web.config Datei .

Staatenlos

Eine viel einfachere Lösung, die für die meisten Szenarien ausreicht, ist die Verwendung des statuslosen Modus, sodass kein Status über die Server Ihrer Webfarm freigegeben werden muss.

Sie können den statuslosen Modus aktivieren, indem Sie OpenIdRelyingParty über null in als Ihre Anwendungsspeicherinstanz instanziieren. Der Aufruf des Standardkonstruktors führt dazu, dass DNOA den speicherinternen Speicher verwendet, der bei Serverfarmen unterbrochen wird, sodass der Standardkonstruktor nicht ausreicht.

Oder wenn Sie die ASP.NET-Steuerelemente verwenden, setzen Sie einfach Stateless = true auf dem Steuerelement.

    
Andrew Arnott 04.09.2009, 21:31
quelle
4

So aktivieren wir den zustandslosen Modus:

%Vor%

Scheint so weit zu funktionieren, obwohl es für Andrew einen kleinen Performance-Hit gibt. Nicht sicher, dass das wichtig ist, seit Login ist eine ziemlich seltene Aktivität.

    
Jeff Atwood 15.10.2009 18:21
quelle
1

Mit DotNetOpenID sollten Sie in der Lage sein, den Zustand, den Sie während der Authentifizierung für den Client benötigen, über einen Cookie beizubehalten.

Bearbeiten: Ich habe keinen Beispielcode dafür, weil ich DotNetOpenID nie in einer sessionlosen Umgebung verwenden musste, aber ich würde diesen Link überprüfen, da er möglicherweise den Informationen, die Sie brauchen: Ссылка

    
mkchandler 04.09.2009 14:32
quelle