- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这几天我一直在用头撞墙。解决方案可能太简单了,无法在博客中陈述,所以我在这里提出这个问题。
我正在开发一个 .NET Core Web API,它应该将所有身份验证和授权委托(delegate)给 Keycloak 身份提供程序服务器。
我在我的 Startup.cs
文件中编写了以下代码:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(o =>
{
o.Authority = "https://idp.abc.xyz/auth/realms/master";
o.Audience = "products-api";
});
services.AddAuthorization(options =>
{
options.AddPolicy("Administrator", policy => policy.RequireClaim("user_roles", "product_catalog_admin"));
options.AddPolicy("User", policy => policy.RequireClaim("user_roles", "product_catalog_user"));
});
现在我可以使用 Postman 从 IDP 请求 token 并将该 token 发送到 Web API。然后 Web API 验证该 token ,但除了 URL 之外不知道任何关于 IDP 的信息,并且只向 IDP 的公共(public) URL 发出请求以获取一些配置。
问题:如果 Web API 对 IDP 一无所知,它如何知道 token 有效且未被篡改(使用不同的 key 创建)?
最佳答案
AddJwtBearer 将使用您提供的选项在内存中执行 token 验证。默认情况下,这涉及以下操作:
第 4 项检查是最复杂的,默认情况下这涉及从 IDP 的 JWKS 端点下载 token 签名公钥,然后在 JWT 的 kid header 中选择一个。 blog post我的有一些关于这是如何工作的细节。
当然,您应该始终测试上述 4 种情况,并确保在每种情况下 API 访问都被拒绝并返回 401 错误响应,客户端可以针对此进行编码。
关于jwt - .net core web api jwtbearer 中间件如何使用身份验证提供程序验证 OpenID Connect token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62161576/
我想用C语言开发一个函数来进行一些处理,但这取决于chrome进程的状态。所以如果chrome正在运行,我应该杀死该进程以使程序正确执行 If(chrome is running ) system("
我是一名优秀的程序员,十分优秀!