2014-05-19 11 views
8

Für meine Firma muss ich ein POC erstellen, um zu überprüfen, ob wir die wsFederation-Authentifizierung für unser Projekt verwenden können, das über eine MVC-App, einige Webapi-Controller und andere verfügt SignalR Hubs, alle in verschiedenen Projekten. Wir möchten auch die OWIN-Authentifizierungs-Middleware sowohl in den Client-Apps als auch in der Identity-Provider-App verwenden.Authentifizierung mit OWIN und WsFederation für MVC, web api und signalR apps

Ich benutze Thinktecture Identity Server v2 als Identity-Provider für einen Start (aber wir müssen irgendwann eigene entwickeln). Für die MVC-App ist es ziemlich einfach und es funktioniert gut, mit einem SAML2-Token.

Aber jetzt werden die Dinge ein bisschen komplizierter, da ich möchte, dass ein authentifizierter Benutzer in der Web-App in der Lage ist, eine Controller-Methode aus der Web-API-App aufzurufen (die sich von der MVC unterscheidet), Verwenden von Ajax-Anrufen.

Ich habe viele Dinge über delegieren und actAs Tokens gelesen, aber ich bin ein bisschen verloren und nicht wo oder wie ich diesen Teil starten soll. Außerdem kann ich nichts über Delegierung mit OWIN-Authentifizierung finden.

Also meine erste Frage ist: Ist es möglich, dies zu erreichen? Und dann: Könnte mir jemand in die richtige Richtung zeigen?

Antwort

1

Ich folgte den Anweisungen von Vittorio Bertocci, als ich daran arbeitete.

http://www.cloudidentity.com/blog/2013/01/09/using-the-jwt-handler-for-implementing-poor-man-s-delegation-actas/

Ein paar Hinweise darüber, wo es heißt JWTSecurityTokenHandler, ist es jetzt JwtSecurityTokenHandler. Es ist ein kleiner Tippfehler, aber es ist eine gute Möglichkeit, 15 Minuten zu verlieren, wenn Sie sich dessen nicht bewusst sind.

Ich war auch nicht in der Lage, die X509 FindByThumbprint Abschnitt entweder zu verwenden. Ich denke, dass mein lokales Zertifikat nicht ordnungsgemäß registriert wurde. Sobald ich morgen bei der Arbeit bin, werde ich posten, was ich ändern musste, um es zur Arbeit zu bringen.

Dominick Baier (http://leastprivilege.com/) macht auch einen Kurs auf Plural mit dem Namen WebApi v2 Security, der eine großartige Arbeit macht, wie man in die Sicherheitspipeline injiziert und das Web-API-Projekt einrichtet.

Als weitere Option können Sie die TokenValidationHandler-Klasse ersetzen, die Vittorio mit dem Microsoft.Owin.Security.Jwt-Paket verwendet, und den folgenden Code in die Datei Startup.cs implementieren.

app.UseJwtBearerAuthentication(
      new JwtBearerAuthenticationOptions 
      { 
       AuthenticationMode = AuthenticationMode.Active, 
       AllowedAudiences = new[] { ConfigurationSettings.AppSettings["ida:Realm"] }, 
       IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[] 
        { 
         new SymmetricKeyIssuerSecurityTokenProvider(
          ConfigurationSettings.AppSettings["ida:ValidIssuer"], 
          ConfigurationSettings.AppSettings["ida:SymmetricKey"]) 
        }, 
       Provider = new OAuthBearerAuthenticationProvider 
       { 
        OnValidateIdentity = context => 
        { 
         var identity = context.Ticket.Identity; 
         return System.Threading.Tasks.Task.FromResult<object>(null); 
        } 
       } 
      }); 
Verwandte Themen