asp.net-core - AddJwtBearer()会执行我认为的吗?

我正在尝试确定是否为.net core 3.0提供了JwtBearer服务,它实际上是否使用了由oidc提供程序众所周知的配置提供的不对称签名密钥?

我找不到与此有关的任何文档。

.AddJwtBearer(opt =>
                    {
                        opt.Authority = "http://localhost:8180/auth/realms/master";
                        opt.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
                        {
                            ValidateIssuer = true,
                            ValidateAudience = false,
                            ValidateLifetime = true,
                            ValidateIssuerSigningKey = true
                        };

我正在使用Keycloak 4.8.3作为我的oidc提供程序。 我能找到的最接近的文档在这里。 https://developer.okta.com/blog/2018/03/23/token-authentication-aspnetcore-complete-guide

相关的部分在这里:

如果您通过发现文档让JwtBearer中间件自动配置,那么所有这些都将自动运行!

上面的代码完成了所有这些工作吗? 由于我们不再注册中间件,因此在3.0中这仍然有意义吗?

我敢打赌,很多人不了解非对称签名密钥,以及为什么它们如此重要。 我们已经从开发人员那里提取了很多东西,现在我什至不知道我的api是否安全。

所以最后一个问题是。 Does the .AddJwtBearer service with "ValidateIssuerSigningKey" periodically check the wellknown or whatever discovery document to grab the latest asymettric signing key?

您不需要设置TokenValidationParameters 如果正确设置了颁发令牌的身份验证服务器地址的Authority ,则JWT承载中间件将使用此URI查找和检索可用于验证令牌签名的公共密钥。 它还将确认令牌中的iss参数与此URI匹配。 中间件将帮助从OIDC元数据获取密钥并缓存密钥。

TokenValidationParameters可以用于您要验证令牌而无需访问发行服务器的情况。 相反,您想使用本地已经存在的公钥来验证传入令牌。然后,您不能设置Authority ,设置ValidateIssuerSigningKeyValidateIssuer ,最后设置IssuerSigningKey ,后者是用于验证传入JWT令牌的公钥。

查看AddJwtBearer的源代码,并根据我的实验,“ Authority只是您需要分配的属性。 在这种情况下,处理程序将使用

MetadataAddress = $"{Authority}/.well-known/openid-configuration";

来解析您的领域的元数据URL并从那里下载签名密钥。

转载请注明来自askonline.tech,本文标题:asp.net-core - AddJwtBearer()会执行我认为的吗?


 Top