2012-02-27 23 views
8

¿Es posible configurar la URL del dominio, los tipos de notificaciones, etc. para el ACS azure sin editar el web.config? ¿Puedes configurar estos elementos requeridos programáticamente de alguna manera?¿Es posible obtener reclamos de ACS sin editar web.config?

EDIT: Específicamente quiero para deshacerse de esto:

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

Básicamente, lo que no quieren el reino se especifica en la configuración web, sino más bien en el código en algún lugar. Intenté reemplazar a ClaimsAuthenticationManager y comentar las partes del código relacionado con FederatedAuthentication. Mi código de autentificación reemplazado es golpeado, pero no contiene ningún reclamo. Supongo que esto se debe a que FederatedAuthentication es un intermediario que realiza su propia autenticación antes de que llegue al ClaimsAuthenticationManager reemplazado normalmente. ¿Hay alguna manera de anular la parte FederatedAuthentication de una manera similar? ¿O hay información pasada al método de autentificación reemplazado que puedo usar para realizar mi propia autenticación?

Respuesta

9

Para eliminar esa línea XML desde el web.config, hice mi propia WSFederationAuthenticationModule anulando la anterior, así:

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; 
    } 
} 

Y 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> 

también la sección federatedAuthentication del XML es eliminado entirel y

+1

Funcionó como un encanto en mi mundo. ¡Gracias! –

1

Sí, FedUtil hace esto. Es una utilidad que viene con el SDK de Windows Identity Foundation (WIF) y puedes invocarlo desde Visual Studio.

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

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

EDIT: Puede que haya entendido mal su pregunta. FedUtil es una utilidad que configura su web.config para usted. Si, en cambio, desea configurar su aplicación en el código, también es posible. La documentación WIF en MSDN debe demostrar cómo hacer esto:

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

+0

Lo segundo es más de lo que estaba buscando. Encontré esta página en controladores de tokens personalizados: http://msdn.microsoft.com/en-us/library/ee517261.aspx para ser muy útil. –

Cuestiones relacionadas