您好,我正在使用身份服务器 4,我创建了一个使用 client_credentials 保护的客户端
我能够使用 clientid 和密钥检索令牌,根据 jwt.io,访问令牌的过期时间为 3600 秒或(1 小时)
在 net core 2.2 api 上我有一个自定义的 AuthorizationHandler
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ClientCredentialRequirement requirement)
{
if (requirement.AllowedClients != null && requirement.AllowedClients.Any()) {
if (context.User.Identity.IsAuthenticated) { // this is false
context.Succeed(requirement);
return Task.CompletedTask;
}
Run Code Online (Sandbox Code Playgroud)
使用客户端凭据时应该返回 false 吗?我希望它是真的,因为令牌是有效的
所以我想通了。
事实证明,该应用程序是一个功能齐全的“idserver”加上“mvc 网站”,已经配置了 cookie 身份验证,这一事实给我带来了问题。
对 api 的请求没有声明,因为不使用承载身份验证方案来处理请求。
我必须将其添加到 api 控制器才能使其按预期工作。
[Authorize(AuthenticationSchemes = "Bearer")]
public class MixedController : Controller
Run Code Online (Sandbox Code Playgroud)
详细信息请参见此处
现在,即使使用客户端凭据,User.Identity 声明也会使用令牌中的声明和范围进行填充,并且 User 显示为 Authenticated = true
| 归档时间: |
|
| 查看次数: |
1642 次 |
| 最近记录: |