Saltar al contenido

Ignorar la firma del token del portador JWT (es decir, no validar el token)

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 un Microsoft.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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *