Nuestros programadores estrellas han agotado sus depósitos de café, en su búsqueda noche y día por la respuesta, hasta que Serena encontró el arreglo en Bitbucket y ahora la compartimos aquí.
Solución:
Prueba esto. Finalmente, conseguí que funcionara después de tanto intentarlo.
public TokenValidationParameters CreateTokenValidationParameters()
var result = new TokenValidationParameters
ValidateIssuer = false,
ValidIssuer = ValidIssuer,
ValidateAudience = false,
ValidAudience = ValidAudience,
ValidateIssuerSigningKey = false,
//IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(SecretKey)),
//comment this and add this line to fool the validation logic
SignatureValidator = delegate(string token, TokenValidationParameters parameters)
var jwt = new JwtSecurityToken(token);
return jwt;
,
RequireExpirationTime = true,
ValidateLifetime = true,
ClockSkew = TimeSpan.Zero,
;
result.RequireSignedTokens = false;
return result;
Puede configurar la validación del token usando JwtBearerOptions.TokenValidationParameters
. Puede verificar todos los parámetros disponibles de la definición de clase.
Contiene un conjunto de parámetros que son utilizados por un
Microsoft.IdentityModel.Tokens.SecurityTokenHandler
al validar unMicrosoft.IdentityModel.Tokens.SecurityToken
.
Establecer todos ValidateXXX
y RequireXXX
bool propiedades a false si desea deshabilitar la validación en absoluto:
.AddJwtBearer("", configureOptions =>
options.TokenValidationParameters.ValidateActor = false;
options.TokenValidationParameters.ValidateAudience = false;
options.TokenValidationParameters.ValidateIssuerSigningKey = false;
...
Como otra opción, puede anular la validación de firma de token predeterminada configurando su propia implementación en JwtBearerOptions.SignatureValidator
:
// Gets or sets a delegate that will be used to validate the signature of the token.
//
// Remarks:
// If set, this delegate will be called to signature of the token, instead of normal
// processing.
public SignatureValidator SignatureValidator get; set;
donde SignatureValidator
delegado se define como:
public delegate SecurityToken SignatureValidator(string token, TokenValidationParameters validationParameters);
Si te animas, puedes dejar un artículo acerca de qué te ha parecido este tutorial.