2012-02-27 14 views
8

È possibile impostare l'URL di dominio, i tipi di reclamo, ecc. Per ACS azzurro senza modificare il web.config? Puoi impostare questi elementi richiesti in modo programmatico in qualche modo?È possibile ottenere reclami ACS senza modificare web.config?

EDIT: In particolare voglio sbarazzarsi di questo:

<federatedAuthentication> 
    <wsFederation passiveRedirectEnabled="true" issuer="https://mynamespace.accesscontrol.windows.net/v2/wsfederation" realm="http://localhost:81/" requireHttps="false" /> 
</federatedAuthentication> 

In sostanza, non voglio il regno viene specificato nella configurazione web, ma piuttosto in codice da qualche parte. Ho provato a sovrascrivere ClaimsAuthenticationManager e commentare le parti del codice relative a FederatedAuthentication. Il mio codice di autenticazione sovrascritta viene colpito, ma non contiene alcuna rivendicazione. Presumo che ciò sia dovuto al fatto che FederatedAuthentication è un intermediario che esegue la propria autenticazione prima che arrivi normalmente al ClaimsAuthenticationManager sottoposto a override. C'è un modo per sovrascrivere la porzione FederatedAuthentication in modo simile? O ci sono informazioni passate nel metodo di autenticazione sovrascritto che posso usare per eseguire la mia autenticazione?

risposta

9

Per rimuovere quella linea xml dalla configurazione web, ho fatto la mia WSFederationAuthenticationModule sovrascrivendo quello vecchio, in questo modo:

public class CustomWSFederationAuthenticationModule : WSFederationAuthenticationModule 
{ 
    protected override void InitializePropertiesFromConfiguration(string serviceName) 
    { 
     this.Realm = "http://localhost:81/"; 
     this.Issuer = "https://acsnamespace.accesscontrol.windows.net/v2/wsfederation"; 
     this.RequireHttps = false; 
     this.PassiveRedirectEnabled = true; 
    } 
} 

E la parte importante del web.config:

<modules runAllManagedModulesForAllRequests="true"> 
    <add name="WSFederationAuthenticationModule" type="CustomModuleLocation.CustomWSFederationAuthenticationModule, CustomModuleLocation" preCondition="managedHandler"/> 
    <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" /> 
</modules> 

anche la sezione federatedAuthentication del XML è entirel rimosso y.

+1

Ha funzionato come un fascino nel mio mondo. Grazie! –

1

Sì, FedUtil lo fa. È un'utilità fornita con l'SDK Windows Identity Foundation (WIF) e puoi richiamarla da Visual Studio.

http://msdn.microsoft.com/en-us/library/ee517285.aspx

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=4451

EDIT: forse ho capito male la domanda. FedUtil è un'utilità che configura il tuo web.config per te. Se invece vuoi configurare la tua applicazione in codice, è anche possibile. La documentazione WIF su MSDN dovrebbe dimostrare come eseguire questa operazione:

http://msdn.microsoft.com/en-us/library/ee766446.aspx

+0

La seconda cosa è più quello che stavo cercando. Ho trovato questa pagina su gestori di token personalizzati: http://msdn.microsoft.com/en-us/library/ee517261.aspx per essere molto utile. –