2015-09-06 41 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()

相關問題