Blazor WebAssembly中如何从Base64公钥获取RsaSecurityKey以验证JWT?
解决Blazor WASM中RSA签名JWT验证的问题
问题1:替代RSACryptoServiceProvider获取签名密钥的方法
别用RSACryptoServiceProvider——它是Windows专属实现,Blazor WASM不支持。改用跨平台的RSA.Create()静态方法创建RSA实例,再导入Base64格式的公钥即可。
问题2:Blazor WASM是否支持非对称密钥验证JWT
完全支持,只要使用.NET跨平台的加密API就行,核心是用RSA基类而非平台特定的实现。
修改后的可行代码
// 替换原RSACryptoServiceProvider实例化逻辑 using var rsa = RSA.Create(); // 导入Base64编码的RSA公钥(DER格式) rsa.ImportRSAPublicKey(Convert.FromBase64String(TokenPublicKeyBase64), out _); var handler = new JwtSecurityTokenHandler(); handler.ValidateToken(token, new TokenValidationParameters { // 按需配置你的验证参数,比如ValidIssuer、ValidAudience等 IssuerSigningKey = new RsaSecurityKey(rsa), ValidateIssuerSigningKey = true, // 其他必要参数... }, out _);
额外提示
如果你的公钥是PEM格式(带-----BEGIN PUBLIC KEY-----和-----END PUBLIC KEY-----标识),可以直接用ImportFromPem简化导入:
rsa.ImportFromPem(TokenPublicKeyPem);
内容的提问来源于stack exchange,提问作者Marc69
相关产品推荐
相关产品推荐

