Ich versuche, JWT-Token-Autorisierung zu erstellen. Zu diesem Zweck habe ich Emittent Teil mit dem Code wie folgt:
%Vor%Und "Ressource" Teil, der Träger-Token akzeptieren sollte:
%Vor% Soweit ich sehen kann, sind die ausgegebenen Token gültig (ich habe die Validierung auf jwt.io gemacht), also ist das Problem etwas anderes. Wenn ich Token in Postman mit dem Aufruf des Controllers schicke, der durch [Authorize]
-Attribut geschützt wird, sende ich immer 401-Code zurück. Könnten Sie bitte beraten, wie Sie das beheben können?
P.S. So implementiere ich benutzerdefinierte JWT fortmat:
%Vor%P.S. Leute, es tut mir leid, aber ich habe vergessen zu erklären, dass "Aussteller" Teil des Codes, der eigenständige Anwendung ist, mittlerweile "Publikum" ist Web API geschützt. Das sind zwei verschiedene Anwendungen, die unabhängig voneinander laufen.
Stellen Sie in Postman sicher, dass Sie den Autorisierungsheader im folgenden Format senden:
%Vor% Stellen Sie sicher, dass die Registerkarte Autorisierung auf Type: No Auth
gesetzt ist.
Wenn Sie weiterhin Probleme haben, setzen Sie einen Haltepunkt in Ihrem GrantResourceOwnerCredentials
und sehen Sie, ob es zu diesem Punkt kommt. Überlegen Sie auch, ob Sie die ValidateClientAuthentication Methode von OAuthAuthorizationServerProvider
, die vor GrantResourceOwnerCredentials
aufgerufen werden sollte, wenn Sie früher in der Ereigniskette debuggen möchten.
Ich habe gerade versucht, das Demoprojekt auszuführen, das in SON Web Token in ASP.NET Web API 2 mit Owin und alles funktioniert wie erwartet.
Ich habe festgestellt, dass sich Ihre Implementierung der Methode Protect
ziemlich unterscheidet. Ich würde vorschlagen, dass Sie Ihre Implementierung mit einem Beispiel aus dem Artikel vergleichen. Versuchen Sie, diese Arbeit zuerst zu machen.
Bitte stellen Sie auch sicher, dass Aussteller, Publikum und Geheimnis auf beiden Servern gleich sind.
Wenn Sie vollständigen Quellcode bereitstellen, kann ich versuchen, mehr zu untersuchen.
Tags und Links c# authorization oauth-2.0 owin jwt