kann nicht konvertieren von Microsoft.IdentityModel.Token.SymmetricSecurityKey' zu 'Microsoft.IdentityModel.Token.SigningCredentials'
Während der folgenden Anleitung
Erstellen Sie eine RESTful API mit Authentifizierung über Web-API und Jwt Ich habe Probleme dabei, die CustomJwtFormat
Klasse zu kompilieren:
using System.IdentityModel.Tokens;
using Microsoft.Owin.Security;
using Microsoft.Owin.Security.DataHandler.Encoder;
using Thinktecture.IdentityModel.Tokens;
namespace BooksAPI.Identity
{
public class CustomJwtFormat : ISecureDataFormat<AuthenticationTicket>
{
private static readonly byte[] _secret =
TextEncodings.Base64Url.Decode(ConfigurationManager.AppSettings["secret"]);
private readonly string _issuer;
public CustomJwtFormat(string issuer)
{
_issuer = issuer;
}
public string Protect(AuthenticationTicket data)
{
if (data == null)
throw new ArgumentNullException(nameof(data));
var signingKey = new HmacSigningCredentials(_secret);
var issued = data.Properties.IssuedUtc;
var expires = data.Properties.ExpiresUtc;
return new JwtSecurityTokenHandler().WriteToken(
new JwtSecurityToken( _issuer, null, data.Identity.Claims,
issued.Value.UtcDateTime, expires.Value.UtcDateTime, signingKey));
}
public AuthenticationTicket Unprotect(string protectedText) {
throw new NotImplementedException();
}
}
}
Den build-Fehler, die ich bekommen hab ist:
Nicht konvertieren
'Thinktecture.IdentityModel.Token.HmacSigningCredentials' zu
'Microsoft.IdentityModel.Token.SigningCredentials'
Haben gesucht, fand ich diese ja posten:
ASP.NET v5-Mehrere SigningCredentials
Ich habe versucht die Empfehlung in der Antwort-post, aber ohne Erfolg. Ich folgte dem link:
Mehrdeutiger Verweis-Problem (Microsoft.AspNet.Identity & Microsoft.AspNet.Identität.Kern)
Aber bin immer noch zu sehen, den Konflikt. Die Paket-und namespace-Kombination sollte ich verwenden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich lief in das gleiche problem.
Sie verwenden eine ältere version des Systems.IdentityModel.Token.Jwt.
öffnen nuget-Paket-manager-Konsole, und führen:
original-Methode:
neue Methode: