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