asp.net-mvc - AD-角色基础授权
问题描述
我正在尝试通过使用角色来获得 Active Directory 授权。我想到目前为止我检查了每一篇文章,但我没有得到它的工作。假设 Group1 是我的用户所在的 AD 组名称。
有效的是,当我直接在控制器上进行检查时:[Authorize(Roles = "Group1")]
但现在我想把这些信息放在 appsettings.json 中,如下所示:
"SecuritySettings": {
"ADGroup": "Group1"
}
在 startup.cs 中调用以下代码:
services.AddAuthorization(options =>
{
options.AddPolicy("ADRoleOnly", policy => policy.RequireRole(Configuration["SecuritySettings:ADGroup"]));
});
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddControllers();
services.AddControllersWithViews();
并将我的控制器更改为:
[Authorize(Roles = "ADRoleOnly")]
但不管我改变什么,我总是得到一个 403 Forbidden。我的环境是 IIS(已激活 Windows 身份验证)和 asp.net core 3 mvc – 使用 Visual Studio Code 构建。
有什么我可能会错过的建议吗?我的意思是,这与我们在互联网上经常看到的例子基本相同。
谢谢
斯蒂芬
解决方案
[Authorize(Roles = "ADRoleOnly")]
这将查找名称为 的角色ADRoleOnly
。但是您所做的是创建一个名为的策略ADRoleOnly
:
options.AddPolicy("ADRoleOnly", policy =>
policy.RequireRole(Configuration["SecuritySettings:ADGroup"]));
因此,为了检查该策略,您需要更改使用该[Authorize]
属性的方式:
[Authorize(Policy = "ADRoleOnly")]
或者由于策略名称是默认的,你也可以这样写:
[Authorize("ADRoleOnly")]
推荐阅读
- php - 将单选按钮输入保存到数组中
- webrtc - webrtc 应用程序显示我的 Turn 服务器已损坏,但它可以工作
- python - GUI 控件的行和列不起作用
- python - 在 SQLAlchemy 中过滤时访问关系的反向引用
- javascript - 如何在纸张js中缩放
- dart - flatButton 需要标签
- c# - 可以使用 C# 以编程方式反编译存储过程
- ansible - Ansible win_lineinfile 模块失败
- asp.net-mvc - .NET MVC DisplayModeProvider 回退
- pagination - 如何使用 Github Pages 在 Jekyll 中对类别进行分页?