【发布时间】:2021-04-29 05:36:38
【问题描述】:
我正在开发应用程序,该应用程序由 Angular 前端和 ASP 网络 Web API 后端(.net 4.5)组成。使用 OpenIdConnect 进行身份验证。我成功地将前端连接到身份提供者,但现在我需要在后端验证 id 令牌,所以我可以肯定,只有经过验证的用户才能调用后端。
此 id 令牌使用 rs256 算法进行签名。所以在后端,我需要做两件事:
-
从身份提供者 URL 获取 JWK - 我有点迷失了,我应该通过普通的 HttpClient 获取它,还是有一些库或帮助函数可以做到这一点?
-
从 JWK 中生成 RSA 公钥并验证令牌 - 为此 iam 使用此函数:
string token="xyz.."; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.ImportParameters( new RSAParameters() { Modulus = FromBase64Url("xyz.."), Exponent = FromBase64Url("xyz..") }); var validationParameters = new TokenValidationParameters { RequireExpirationTime = true, RequireSignedTokens = true, ValidateAudience = false, ValidateIssuer = false, ValidateLifetime = true, IssuerSigningKey = new RsaSecurityKey(rsa) }; SecurityToken validatedSecurityToken = null; var handler = new JwtSecurityTokenHandler(); handler.ValidateToken(tokenStr, validationParameters, out validatedSecurityToken); JwtSecurityToken validatedJwt = validatedSecurityToken as JwtSecurityToken;
它可以工作,但现在我需要以某种方式将它与加载的 JWK 连接起来,并注册它以将其用于每个到来的请求。任何建议或简单的例子都会对我有帮助。谢谢。
【问题讨论】:
标签: asp.net asp.net-web-api jwt openid-connect