Ich habe ein in PHP eingerichtetes Authentifizierungssystem, das ich verwenden möchte, um JSON-Web-Token an eine Client-App zu senden, damit die App auf einen .net-Core 2.0 zugreifen kann api. Der Authentifizierungsserver nimmt also Benutzeranmeldeinformationen und wenn die Anmeldeinformationen übergeben werden, generiert er das Token unter Verwendung eines öffentlichen/privaten Schlüsselpaars, das ich mit openssl erstellt habe. Ich erzeuge das Token mit dem Verfahren hier: http://www.phpbuilder.com/articles/application-architecture/security/using-a-json-web-token-in-php.htmlBearer error = "invalid_token" von .net core 2.0
Ich kann das resultierende Token mit jwt.io gerade gut dekodieren. Die decodierte Version sieht wie folgt aus:
{
"typ": "JWT",
"alg": "HS256"
}
{
"iss": "https://crm.advtis.com",
"exp": "2017-12-21 18:14:42",
"aud": "https://localhost:44354",
"data": {
"username": "[email protected]",
"role": 1
}
}
ich die Zeichenfolge aus meiner privaten Schlüsseldatei eingeben, die verwendet wurde, das Token zu kodieren, und jwt.io sagt die Signatur gültig ist.
So jetzt möchte ich das Token zusammen mit einer Anfrage an meine API senden, um Zugriff auf diese Ressource, die während der Fehlersuche auf localhost gefunden wird. Hier ist der .NET 2.0 Startup-Code relevant, dass:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<SmartRxDBContext>();
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Audience = "https://localhost:44354/";
options.TokenValidationParameters = new TokenValidationParameters {
ValidateIssuerSigningKey = true,
ValidateIssuer = true,
ValidIssuer = "https://crm.advtis.com/",
IssuerSigningKey = new X509SecurityKey(new X509Certificate2("C:\\Path\\To\\webOrders-cert-AspNetPubkey.cert"))
};
});
services.AddMvc();
}
Der Weg zu einem pem formatierte öffentliche Schlüssel verwiesen wird, ist I erzeugt, auch OpenSSL, aus dem privaten Schlüssel verwendet, um die jwt zu kodieren. Ich habe versucht, diesem Beispiel für den .NET Core-Beitrag zu folgen - JWT Validation and Authorization in ASP.NET Core - aber natürlich wurde die gesamte Auth Middleware-Konfiguration in 2.0 in die ConfigureServices-Methode verschoben, und es gibt keine automatische Authorization-Option mehr.
Alles scheint in Ordnung zu sein, aber ich bin ein 401 immer - nicht autorisiert Bearer error = „invalid_token“ Fehler beim Auf jeden Fall eine Anforderung mit dem Header als Authorization: Bearer TOKEN
machen, ich habe gehofft, jemand mir einen Rat, wo geben konnte ich könnte falsch laufen und/oder wie ich weitere Fehler beheben könnte.