Wir haben Windows Identity Foundation (WIF) in unserem ASP.NET 4.5 MVC 4-Projekt mit Hilfe der Identity und Access ... Erweiterung erfolgreich konfiguriert für Visual Studio 2012. Sie können jedoch einen bestimmten Pfad nicht von der Autorisierung ausschließen, um anonymen Zugriff zuzulassen.Ausschließen von WIF-Autorisierung in einem ASP.NET MVC 4-Projekt
Wenn wir auf unsere Standardroute (d. H. /Home
) zugreifen, leitet die passive Umleitung uns zum konfigurierten Aussteller Uri um. Dies ist aktuell. Aber jetzt nehmen wir an, wir möchten den Pfad /Guest
von der STS-Authentifizierung ausschließen, so dass jeder auf http://ourhost/Guest
zugreifen kann, ohne an den STS-Aussteller weitergeleitet zu werden. Dort befinden sich nur statische Dokumente.
Snippets von Web.config
:
<system.identityModel>
<identityConfiguration>
<audienceUris>
<add value="http://ourhost/" />
</audienceUris>
<issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<trustedIssuers>
<add thumbprint="9B74****40D0" name="OurSTS" />
</trustedIssuers>
</issuerNameRegistry>
<certificateValidation certificateValidationMode="None" />
</identityConfiguration>
</system.identityModel>
<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="false" />
<wsFederation passiveRedirectEnabled="true" issuer="http://oursts/Issue" realm="http://ourhost/" reply="http://ourhost/" requireHttps="false" />
</federationConfiguration>
</system.identityModel.services>
Weiterhin haben wir ...
<system.webServer>
<!-- ... -->
<modules runAllManagedModulesForAllRequests="true">
<add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
<remove name="FormsAuthentication" />
</modules>
</system.webServer>
und schließlich:
<system.web>
<!-- ... -->
<authentication mode="None" />
</system.web>
Wir haben versucht, die folgenden ohne Erfolg:
<location path="~/Guest"> <!-- also "/Guest" is not working -->
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Wir haben auch versucht, eine kleine Datei Web.config in diesen Ordner zu legen, ohne Erfolg. Egal, in welchem Uri wir im Browser suchen, wir werden immer umgeleitet.
Was ist der richtige Weg, dies zu erreichen?
EDIT
der vorherigen entfernt „akzeptiert beantwortet“, setzen Sie „akzeptierte Antwort“ auf Eugenios answer, da dies die weitere sachdienliche Antwort ist.
Dank Eugenio, verwenden wir Visual Studio 2012 und "Add STS Reference" wird nicht dort verfügbar, müssen Sie die "Identität und Ac cess ... "Werkzeug stattdessen. Ich denke, ich bin nah an der Lösung, sieht aus wie die 'passivRedirectEnabled =" true "' hat mich auf die STS unabhängig von Attributverwendung umgeleitet.Die Einstellung auf "false" und das Umleiten mithilfe einiger Umleitungshilfen in einem benutzerdefinierten Authentifizierungsattribut scheint im Moment ziemlich gut zu sein. Ich werde meine Lösung posten, wenn ich fertig bin, Danke! – thmshd
Ich verstehe. Es sollte auch mit passivRedirectEnabled = true funktionieren. Ich überprüfe auch mein System. –
Da ich wirklich Probleme hatte, dies mit der passivRedirectEnabled Option zu erreichen, möchte ich meine eigene Antwort als Lösung akzeptieren, aber ich schätze Ihre Hilfe zu diesem Thema sehr und glaube, dass es wahrscheinlich auch funktioniert, aber vielleicht liegt die Lösung irgendwo darin verborgen Meine 'web.config' Einstellungen in Kombination mit dem IIS Setup. Danke für deine Zeit, wirklich geschätzt! – thmshd