Formularauthentifizierung über Anwendungen hinweg

8

Ich arbeite an einem internen webbasierten Tool für meine Firma. Ein Teil dieses Tools ist eine andere Anwendung (The Cruise Control Dashboard), die in einem eigenen virtuellen Verzeichnis unter meiner Root-Anwendung läuft.

Ich wollte den Zugriff auf diese interne Anwendung beschränken, indem ich die Formularauthentifizierung dafür eingerichtet habe und ein Anmeldeformular in der Stammanwendung eingerichtet habe.

Ich füge folgendes in die root-Anwendung web.config ein:

%Vor%

Die Formularauthentifizierung scheint jedoch nicht zu funktionieren, sie leitet nicht zurück zur Anmeldeseite, wenn ich direkt auf diese Anwendung zugreife.

Ich habe das Gefühl, ich habe das & lt; erlauben & gt; und & lt; verweigern & gt; Tags falsch gesetzt. Kann jemand klären?

    
FlySwat 21.08.2008, 02:33
quelle

8 Antworten

1

Sie müssen auch path="/" in die & lt; forms-Tags einfügen, die ich denke. Tut mir leid, es ist eine Weile her, seit ich das gemacht habe

    
David Wengier 21.08.2008, 03:53
quelle
8
  

Sie müssen möglicherweise auch path="/" in die

Das war es!

Also, Zusammenfassung, um dies zu tun;

Fügen Sie im Stamm web.config hinzu:

%Vor%

Dies muss getan werden, weil es standardmäßig "AutoGenerate, IsolateApps" ist.

Zweitens müssen Sie das Formular Auth Cookie in beiden gleich nennen, ich habe das alles in meinem root mit dem location Tag gemacht:

%Vor%

Schließlich:

%Vor%

Danke für Ihre Hilfe. Das war ein Stumper.

    
FlySwat 21.08.2008 04:01
quelle
2

FormsAuthentication verschlüsselt die Token, die es dem Benutzer gibt, und verschlüsselt standardmäßig die Schlüssel für jede Anwendung. Um zu erreichen, dass Forms Auth über Anwendungen hinweg funktioniert, müssen Sie einige Dinge tun:

Legen Sie als Erstes den Namen "Forms Auth" für alle Anwendungen fest. Dies geschieht mit:

%Vor%

Setzen Sie den "name" in beiden Anwendungen web.configs gleich.

Zweitens müssen Sie beiden Anwendungen mitteilen, dass sie beim Verschlüsseln den gleichen Schlüssel verwenden sollen. Das ist ein bisschen verwirrend. Als ich das eingerichtet habe, musste ich nur noch folgendes zu beiden web.configs hinzufügen:

%Vor%

Laut den Dokumenten ist das der Standardwert, aber es hat nicht funktioniert, wenn ich es nicht angegeben habe.

    
David Wengier 21.08.2008 03:28
quelle
0
  

Das funktioniert nicht, es erlaubt immer noch allen Benutzern (authentifiziert oder nicht) zuzugreifen.

Ich würde denken, Sie könnten sogar das allow-Tag weglassen, da es überflüssig ist. Nur:

%Vor%     
Mark Glorie 21.08.2008 02:56
quelle
0

Wo sitzt dieser Code Jonathan? Meiner Erfahrung nach habe ich ein Login-Steuerelement und im OnAuthenticate-Event würde ich Authenticated auf false setzen ...

%Vor%

Aber das ist der Microsoft Way

    
Mark Glorie 21.08.2008 03:31
quelle
0

Sie erlauben alle nicht authentifizierten. Sie suchen vielleicht nach so etwas

%Vor%     
Darren Kopp 21.08.2008 02:36
quelle
0

Was ist die Dateierweiterung für diese Anwendung zur Geschwindigkeitsregelung? Wenn es sich nicht um einen Dateityp handelt, für den ASP.NET registriert ist (z. B. jsp, java usw.), fungiert ASP.NET nicht als Authentifizierungsmechanismus (auf IIS 5 und 6). Wenn Sie beispielsweise für statische HTML-Dateien eine Platzhalterzuordnung implementiert haben, führt IIS die gesamte Authentifizierung und Autorisierung durch und stellt die Datei bereit, ohne die ASP.NET-Erweiterung isapi einzubeziehen. IIS7 kann den neuen integrierten Pipeline-Modus verwenden, um alle Anforderungen abzufangen. Für IIS6 sollten Sie sich Scott Gus Artikel zu diesem Thema .

    
MatthewMartin 28.11.2008 16:07
quelle
0

Keiner der obigen Vorschläge hat für mich funktioniert. Stellt sich im Stamm web.config Set:

%Vor%

und stellen Sie sicher, dass sowohl die root-und Kind-App in system.web

haben %Vor%

, wodurch der IsolateApps-Standardwert deaktiviert wird.

Dann hat alles funktioniert!

    
Kevin Pluck 16.01.2017 13:48
quelle