首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asp.Net核心未接收令牌

Asp.Net核心未接收令牌
EN

Stack Overflow用户
提问于 2020-06-20 22:17:09
回答 2查看 142关注 0票数 0

我使用indentiyserver4实现了一个身份提供者来验证我的API,我想知道IDP是否有可能对本身进行身份验证。目前,当我发送access_token到我的国内流离失所者,我没有收到任何索赔。我想添加身份验证,以便只允许管理员管理用户。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-21 06:46:53

客户端只为某些作用域请求访问令牌。这些作用域是资源的一部分,确保访问令牌只能由特定的受众使用。IDP忽略声明的原因,是因为IDP不是资源的一部分。

如果您想用api端点扩展IDP,例如,对于客户端必须访问的类似Admin的功能,那么您可以像配置任何其他Api一样配置它。如果允许客户端请求作用域,那么声明将成为访问令牌的一部分,并且,作为受众,IDP将看到声明。

但是对于IDP上的视图/页面,您可以简单地使用cookie。登录时,您可以将这些声明添加到本地cookie中。

在代码中,您可以像普通一样使用授权。您可以定义策略并使用筛选器和属性。

假设一个用户是'Admin组‘的一部分,那么您可以在登录到cookie时添加这个角色。

代码语言:javascript
复制
await HttpContext.SignInAsync(user.Id, user.UserName, new Claim("role", "Admin"));

通过授权属性,您可以限制对IDP中的控制器的访问。您可以配置策略:

代码语言:javascript
复制
services
    .AddAuthorization(options =>
    {
        options.AddPolicy("AdminRole", p => p.RequireRole("Admin"));
    });

并限制控制器级别的访问:

代码语言:javascript
复制
[Authorization("AdminRole")]

使用方案指定授权是否使用承载令牌。

代码语言:javascript
复制
[Authorization("AdminRole", AuthenticationSchemes = "Bearer")]
票数 0
EN

Stack Overflow用户

发布于 2020-06-21 03:18:32

您要寻找的是Authorization on IdentityServer。要实现这一点,不需要将access_token传递给IDS4,只需为需要授权的控制器/操作添加[Authorize]属性即可。很好的例子是快速启动上的ConsentController

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62492341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档