0
我有一個使用PHP創建的JWT令牌,然後我需要在.NET應用程序(框架版本4.5.1)中使用它。該令牌使用下面的代碼(依賴於https://github.com/lcobucci/jwt庫)在PHP中生成:驗證/驗證在.NET中使用PHP創建的JWT令牌
use Lcobucci\JWT\Builder;
use Lcobucci\JWT\Signer\Hmac\Sha256;
$tokenBuilder = new Builder();
$tokenSigner = new Sha256();
$token = (string)$tokenBuilder
->setIssuer('localhost:8081')
->setAudience('myaudience')
->setIssuedAt(time())
->setExpiration(time() + 86400)
->sign($tokenSigner, '710VWV0zby')
->getToken();
return $token;
我已經能夠讀取C#令牌很好,但我在努力防範,弄清楚如何確認和驗證令牌簽名。
TokenValidationParameters validationParameters = new TokenValidationParameters
{
ValidateIssuer = true
};
var tokenHandler = new JwtSecurityTokenHandler();
// THIS IS TO TEST IF TOKEN CAN BE READ
/*var jwtToken = tokenHandler.ReadJwtToken(token);
HttpContext.Current.Response.Write(jwtToken.Issuer);*/
SecurityToken validatedToken = null;
try
{
tokenHandler.ValidateToken(token, validationParameters, out validatedToken);
}
catch (Exception)
{
HttpContext.Current.Response.Write("Invalid! :(");
}
if (validatedToken != null) {
HttpContext.Current.Response.Write("Valid! :)");
}
很明顯,我的代碼無法驗證任何簽名,因爲在任何地方都沒有提到SHA-256密鑰。我假設我需要在TokenValidationParameters中以某種方式包含我需要設置的屬性,並且我猜SigningToken將是唯一的屬性,但我不知道從哪裏開始指定HMAC SHA 256密鑰。