2015-09-06 38 views

回答

1

如果您的密码是基本64编码的字节数组,则这似乎可行。

public static void ValidateJwtWithHs256(String encodedJwt, String base64EncodedSecret, String validAudience, String validIssuer) 
{ 
    var tokenValidationParameters = new TokenValidationParameters 
    { 
     IssuerSigningToken = new BinarySecretSecurityToken(Base64UrlEncoder.DecodeBytes(base64EncodedSecret)), 
     ValidIssuer = validIssuer, 
     ValidAudience = validAudience, 
    }; 
    SecurityToken securityToken; 
    new JwtSecurityTokenHandler().ValidateToken(encodedJwt, tokenValidationParameters, out securityToken); 
} 

或者,你可以告诉验证器无法验证某些部分,像这样:

var tokenValidationParameters = new TokenValidationParameters 
{ 
    IssuerSigningToken = new BinarySecretSecurityToken(Base64UrlEncoder.DecodeBytes(base64EncodedSecret)), 
    ValidateAudience = false, 
    ValidateIssuer = false, 
}; 

不幸的是,我仍然不知道如何在一个秘密的字符串,它是不工作的碱基64编码像http://jwt.io那样。

0

不幸的是,我仍然不知道如何在一个不是base-64编码的秘密字符串中工作,如http://jwt.io那样。

我没有足够的评论声望,所以我会把它放在这里。要使用非基本64位编码的秘密,你刚才用的Encoding.UTF8.GetBytes()代替Base64UrlEncoder.DecodeBytes()

相关问题