Warum ist FederatedAuthentication.WSFederationAuthenticationModule in MVC Azure ACS Federated Authentication null?

Ich versuche, FederatedAuthentication mit .NET 4.5, MVC 4 und Active Redirect mithilfe einer benutzerdefinierten serverseitigen Anmeldeseite unter Verwendung von Code von zusammenzustellendiese Tutorial und vondiese Codebeispiel.

Die Umleitung zur LogOn-Methode meines AccountControllers funktioniert einwandfrei, und die Methode sieht folgendermaßen aus:

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

Das scheitert daranFederatedAuthentication.WSFederationAuthenticationModule ist Null.

Unter Verwendung von VS 2012 habe ich den neuen Identitäts- und Zugriffsassistenten ausgeführt (der den alten STS-Dialog zu ersetzen scheint). Dadurch habe ich einen Ordner mit FederationMetadata erhalten, der korrekt angezeigt wird, und verschiedene Änderungen an meiner Web.Config vorgenommen. Insbesondere sieht der Modulabschnitt so aus:

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

Und SO Antworten gesehen zu haben8937123 und8926099Folgendes habe ich auch hinzugefügt:

 <httpModules>
  <add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</httpModules>

Und schließlich zeigt meine Nuget-Paketkonfiguration Microsoft.IdentityModel, auf das die MVC-App korrekt verweist:

<packages>
  <package id="Microsoft.IdentityModel" version="6.1.7600.16394" targetFramework="net45" />
</packages>

Habe ich auch gesehendiese Frage auf social.msdn, was nur darauf hindeutet, dass der STS-Dialog ausgeführt werden muss.

Kann jemand erklären, warumFederatedAuthentication.WSFederationAuthenticationModule wäre null und was kann ich tun, um dies zu verhindern?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage