Identityserver4 使用角色与API服务共同托管Identity Server 4

Identityserver4 使用角色与API服务共同托管Identity Server 4,identityserver4,roles,Identityserver4,Roles,我在同一个应用程序主机上遇到了一个共同托管Identity Server 4的问题,API服务需要它来进行身份验证和授权 现在,我能够通过纯粹的身份验证成功地复制这一点,但当涉及到使用角色的授权时,我无法使其工作,即在我的控制器操作中添加[Authorize(Roles=“My Role”)]]属性。 访问令牌包含“角色”范围和声明,但似乎根本不受尊重 我最初尝试了下面的代码,但它根本没有执行JWT承载位,这让我相信Identity Server使用了自己的处理程序来实现这一目的,我根本不知道如

我在同一个应用程序主机上遇到了一个共同托管Identity Server 4的问题,API服务需要它来进行身份验证和授权

现在,我能够通过纯粹的身份验证成功地复制这一点,但当涉及到使用角色的授权时,我无法使其工作,即在我的控制器操作中添加
[Authorize(Roles=“My Role”)]]
属性。 访问令牌包含“角色”范围和声明,但似乎根本不受尊重

我最初尝试了下面的代码,但它根本没有执行JWT承载位,这让我相信Identity Server使用了自己的处理程序来实现这一目的,我根本不知道如何配置它

services.AddAuthentication(选项=>
{
options.DefaultAuthenticateScheme=JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme=JwtBearerDefaults.AuthenticationScheme;
})
//JWT令牌(默认方案)
.AddJwtBearer(选项=>
{
选项。权限=”https://localhost:44367/";
options.acquisition=“API”;
options.TokenValidationParameters.RoleClaimType=“role”;
});
然后我从示例代码(我最初在本文中提到过)中看到了这一行,它似乎赋予了我在Identity Server上运行API服务的能力:

services.AddLocalApiAuthentication();
但它似乎也不能满足我的要求

那么,Identity Server身份验证中间件是否允许我完成基于角色的身份验证,或者是否有其他机制(即策略)需要研究

值得一提的是,我能够通过Identity Server 4成功地完成所有这一切,但是通过单独托管。我想看看把它放在一起需要什么。

只是重新检查了一下,它工作得非常好

当你使用

services.AddLocalApiAuthentication();
它设置
IdentityServerAccessToken
authenticationScheme

要在API控制器中使用它,请键入

[授权(IdentityServerConstants.LocalApi.PolicyName)]
如文件所述,或

[授权(AuthenticationSchemes=“IdentityServerAccessToken”)]
检查角色所需的只是该属性的另一个参数:

[授权(AuthenticationSchemes=“IdentityServerAccessToken”,Roles=“test role1”)]

很抱歉回复太晚。谢谢你的信息。我不知道可以在[Authorize]属性中设置的方案。