¿Por qué FederatedAuthentication.WSFederationAuthenticationModule sería nulo en MVC Azure ACS Federated Authentication?
Estoy tratando de armar la autenticación federada con .NET 4.5, MVC 4 y el redireccionamiento activo utilizando una página de inicio de sesión personalizada del servidor, usando el código deesta tutorial, y desdeesta Ejemplo de código.
La redirección al método LogOn de mi AccountController funciona bien, y el método se ve así:
public ActionResult LogOn()
{
HrdClient hrdClient = new HrdClient();
WSFederationAuthenticationModule fam = FederatedAuthentication.WSFederationAuthenticationModule; /*** Fails here because this is null **/
HrdRequest request = new HrdRequest(fam.Issuer, fam.Realm, context: Request.QueryString["ReturnUrl"]);
IEnumerable<HrdIdentityProvider> hrdIdentityProviders = hrdClient.GetHrdResponse(request);
ViewData["Providers"] = hrdIdentityProviders;
return View();
}
Esto falla porqueFederatedAuthentication.WSFederationAuthenticationModule
es nulo.
Usando VS 2012, ejecuté el nuevo asistente de Identidad y Acceso (que parece reemplazar el antiguo cuadro de diálogo STS). Esto me ha dado una carpeta de FederationMetadata, que parece correcta, y varias modificaciones a mi Web.Config. En particular, la sección de módulos se ve así:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<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" />
</modules>
Y habiendo visto SO respuestas8937123 y8926099, También he añadido lo siguiente:
<httpModules>
<add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</httpModules>
Y, finalmente, mi configuración de paquetes nuget muestra Microsoft.IdentityModel, a la que hace referencia correctamente la aplicación MVC:
<packages>
<package id="Microsoft.IdentityModel" version="6.1.7600.16394" targetFramework="net45" />
</packages>
También he vistoesta pregunta en social.msdn, lo que parece sugerir que el cuadro de diálogo STS necesita ejecutarse.
¿Alguien puede explicar por qué?FederatedAuthentication.WSFederationAuthenticationModule
sería nulo, y ¿qué puedo hacer para evitar que esto suceda?