Abbiamo configurato correttamente Windows Identity Foundation (WIF) nel nostro progetto ASP.NET 4.5 MVC 4 con l'aiuto dell'estensione Identità e accesso ... per Visual Studio 2012. Tuttavia, non è possibile escludere un percorso specifico dall'autorizzazione per consentire l'accesso anonimo.Escludere il percorso specifico dall'autorizzazione WIF in un progetto ASP.NET MVC 4
Quando accediamo al nostro percorso predefinito (ad esempio /Home
), il reindirizzamento passivo ci reindirizzerà all'emittente Uri configurato. Questo è currect. Ma ora supponiamo di voler escludere il percorso /Guest
dall'autenticazione STS in modo che tutti possano accedere a http://ourhost/Guest
senza essere indirizzati all'emittente STS. Solo i documenti statici si trovano lì.
Frammenti da 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>
Inoltre abbiamo ...
<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>
e infine:
<system.web>
<!-- ... -->
<authentication mode="None" />
</system.web>
Abbiamo provato la seguente senza successo:
<location path="~/Guest"> <!-- also "/Guest" is not working -->
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Abbiamo anche provato a mettere un piccolo file Web.config in questa cartella, senza successo. Non importa quale Uri individuiamo nel browser, siamo sempre reindirizzati.
Qual è il modo corretto per realizzare questo?
EDIT
Rimosso il precedente "accettato risposto", impostare "risposta accettata" per Eugenios answer come questo è la risposta più utile.
Grazie Eugenio, si utilizza Visual Studio 2012 e "Aggiungi STS riferimento" non è disponibile lì, devi usare "Identity and Ac cess ... "invece lo strumento. Penso di essere vicino alla soluzione, sembra il 'passiveRedirectEnabled =" true "' mi stava reindirizzando al STS indipendentemente dall'uso di qualsiasi attributo.L'impostazione su 'false' e il reindirizzamento usando alcuni helper di reindirizzamento all'interno di un attributo di autenticazione personalizzato sembra piuttosto buono al momento. Pubblicherò la mia soluzione quando ho finito, grazie! – thmshd
Vedo. Dovrebbe funzionare anche con passiveRedirectEnabled = true. Controllerò anche il mio sistema. –
dal momento che ho davvero avuto problemi con l'opzione passiveRedirectEnabled abilitata, voglio accettare la mia risposta come soluzione, ma apprezzo molto il tuo aiuto su questo argomento e credo che probabilmente funzioni anche, ma forse la soluzione risiede da qualche parte sepolta all'interno le mie impostazioni 'web.config' in combinazione con l'installazione di IIS. Grazie per il tuo tempo, davvero apprezzato! – thmshd