繁体   English   中英

如何在 C# .Net 中验证 keycloak 的 JWT 令牌?

[英]How to validate the JWT token of keycloak in C# .Net?

一旦我们在前端获得 JWT 令牌,我们就可以使用 Authorization 标头或通过 cookie 来验证后端服务器中的无状态 RestAPI。 这个视频中很好地解释了。

如果后端服务器在 C# .Net Framework (MVC) 中,如何验证接收到的 JWT? 官方文档指向未维护的OWIN

看到各种博客和文档,理论说我们需要从Keycloak Realms的公共证书中获取Modulus & Exponent参数,然后使用JWT.Net进行验证

如何实现?

通过 keycloak 获取你所在领域的公共证书:

获得公共证书

你会得到这样的东西,需要正确格式化:

原始证书数据

  1. 复制您领域的 PublicCertificate

  2. 将其保存在KeyCloakRealm.Public.crt文件中

  3. 添加标题-----BEGIN CERTIFICATE-----

  4. 使单行证书每行64字节

  5. 添加页脚-----END CERTIFICATE-----

crt文件格式

然后可以使用以下代码片段来验证收到的 JWT 令牌。

X509Certificate2 certificate = new 
X509Certificate2("KeyCloakRealm.Public.crt");

RSACryptoServiceProvider key =(RSACryptoServiceProvider)certificate.PublicKey.Key;
RSAParameters rsaParameters = key.ExportParameters(false);

RSA rsa = RSA.Create();
rsa.ImportParameters(rsaParameters);

var json = JwtBuilder.Create()
         .WithAlgorithm(new RS256Algorithm(rsa)) // asymmetric
         .MustVerifySignature()
         .Decode(token);
// The above method will throw an appropriate error if the JWT is invalid or cannot be validated against the supplied public keycloak realm
// If there is no exception, you will get the data in your json object

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM