首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有身份框架的情况下执行基于角色的授权?

如何在没有身份框架的情况下执行基于角色的授权?
EN

Stack Overflow用户
提问于 2022-07-07 15:05:47
回答 2查看 754关注 0票数 1

我看的是一个web api,它在没有身份框架的情况下执行身份验证/授权。

program.cs文件的身份验证配置如下:

代码语言:javascript
复制
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                .AddJwtBearer(options => ....

登录控制器操作设置一个带有用户登录名的JWT令牌,并将其返回给调用者。其他每个控制器操作都具有用于控制访问的“授权”或“AllowAnonymous”属性。

我的任务是添加基于角色的授权到这个网络api。例如,这样我就可以对管理控制器操作使用授权(Roles= "Administrator")。在数据库用户表中,我创建了角色列,作为用户角色的占位符;从而执行基于角色的授权。

我正在查看这个链接:https://learn.microsoft.com/en-us/aspnet/core/security/authorization/roles?view=aspnetcore-6.0 --但这是关于在使用标识时基于角色的授权。但我没有使用身份框架。

我正在考虑的一个解决方案是--在登录期间,将角色写入JWT令牌,然后为每个角色编写一个属性(将应用于相应的控制器操作),以便比较JWT令牌中的角色。

基于角色的授权是否依赖于.net标识?或者我可以简单地将角色或声明的值设置到JWT令牌中(登录期间),并通过通常的[Authorize(Roles = "Administrator")]自动执行基于角色的授权,这是支持的吗?任何简单的例子或参考都会有帮助。

EN

回答 2

Stack Overflow用户

发布于 2022-07-07 17:38:21

生成令牌时,添加“角色”声明

代码语言:javascript
复制
var claims = new Claim[]
            {
                new Claim(ClaimTypes.Name, "Jeffcky"),
                new Claim(ClaimTypes.Role,"Administrator")
            };
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("........"));

            var token = new JwtSecurityToken(
              issuer: "......",
              audience: "......",
              claims: claims,
              notBefore: DateTime.Now,
              expires: DateTime.Now.AddMinutes(5),
              signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256)
            );
var token=new JwtSecurityTokenHandler().WriteToken(token);
票数 3
EN

Stack Overflow用户

发布于 2022-07-07 15:16:23

如果我理解错了您的问题,请纠正我,但是您想通过API实现自定义提供程序来进行身份验证吗?

在这里,我实现了一个自定义提供程序,它使用存储在Ontraport web服务中的数据验证用户/pass。

https://github.com/mysteryx93/OntraportApi.NET/tree/master/OntraportApi.IdentityCore

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

https://stackoverflow.com/questions/72900206

复制
相关文章

相似问题

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