Ich versuche derzeit, einen Proof of Concept für die Ansprüche basierte Authentifizierung für eine neue Anwendung zu erstellen, indem ich eine Kombination der folgenden Technologien benutze: Web API 2, OWIN Middleware und JWT.
Um die Dinge einfach zu halten, habe ich mit der Web-API 2-Projektvorlage begonnen und die Authentifizierung in "Individuelle Benutzerkonten" geändert. Der von mir erstellte Beispielclient konnte dann durch Aufrufen von / Token ein Token abrufen und war in der Lage, einen Beispielendpunkt mit dem OAuth-Bearer-Token aufzurufen. So weit, ist es gut. Ich habe dann den folgenden Code zu Startup.Auth.cs hinzugefügt, um JwtBearerAuthentication zu versuchen und zu aktivieren:
%Vor%Ich habe erwartet, dass Web API 2 JWTs aus dem Aufruf von / Token zurückgibt, aber es scheint nichts getan zu haben. Ich habe mir einige Tage lang den Kopf dagegen geschlagen, ohne Erfolg, und die Microsoft-Dokumente sind nicht sehr aktuell.
Ich habe auch versucht, zu meinen OAuthAuthorizationServerOptions Folgendes hinzuzufügen:
%Vor%Ich könnte auch versuchen, das völlig Falsche zu tun.
Irgendwelche Ideen würden sehr geschätzt werden.
Nun, jetzt gibt es eine Einstellung für OAuthAuthorizationServerOptions
, dass Sie das Format Ihres Zugriffstokens angeben können, nicht den Autorisierungscode, wie Sie es bei Ihrem Beispiel tun.
Also statt:
%Vor%Sie sollten:
%Vor%Die Windows Identity Foundation verwendet ein proprietäres Token-Format, nicht JWT. Der JWT-Code, den Sie oben sehen, ist für konsumierende Tokens, die diese nicht generieren. Es gibt eine hilfreiche Diskussion über die ASP.NET-Foren .
In der zweiten Hälfte des Jahres 2014 hat Microsoft jedoch offiziell die Unterstützung für JWT in Windows Identity Foundation mit der veröffentlicht JSON-Web-Token-Handler . Sie sollten in der Lage sein, das Paket zu installieren und zu verwenden, um das von Ihnen beschriebene Problem zu lösen.
Ich glaube nicht, dass es einen aktuellen Weg gibt, um zu überschreiben, wie das Token in der Antwort ausgegeben wird. Ich habe mir den OAuthAuthorizationServerHandler im Katana Quellcode-Repository .
Sie werden sehen, dass in der InvokeTokenEndpointAsync-Methode ein Abschnitt vorhanden ist, der einen JsonTextWriter erstellt, der die Antwort generiert. Es wird nicht so gemacht, dass irgendeine Art von Erweiterung es beeinflussen würde.
Ich finde das auch frustrierend. Die Bibliothek von Microsoft sollte eine Möglichkeit haben, die Antwortserialisierung leicht zu überschreiben. Sie können nicht Ihre eigenen benutzerdefinierten Parameter zu der Antwort hinzufügen.
Sie können dieses Beispiel Ссылка
verwendenzum Schreiben der Authentifizierungslogik in Ihrem Projekt. Danach müssen Sie jedem Controller oder jeder Aktion, die eine Autorisierung erfordert, das Attribut [Authorize] hinzufügen (OWIN Katana enthält die Logik zur Validierung des Tokens, Autorisierung und einige andere nützliche Dinge).
Tags und Links c# owin jwt asp.net-web-api2