【发布时间】:2015-12-30 23:15:26
【问题描述】:
我正在开发一个 Intranet 应用程序,并希望使用现有组织的 Active Directory 进行用户身份验证和基于策略的角色授权。
有人能指出我正确的方向吗?我有点困惑(实际上很困惑)。
谢谢
【问题讨论】:
标签: asp.net active-directory ldap asp.net-core-mvc
我正在开发一个 Intranet 应用程序,并希望使用现有组织的 Active Directory 进行用户身份验证和基于策略的角色授权。
有人能指出我正确的方向吗?我有点困惑(实际上很困惑)。
谢谢
【问题讨论】:
标签: asp.net active-directory ldap asp.net-core-mvc
http://docs.asp.net/en/latest/security/index.html 下的每个 Authentication 和 Autorization 资源
首先启动一个新的 ASP.Net Web 应用程序项目,选择 Web 应用程序模板,然后在右侧窗格中按“更改身份验证”按钮并选择“Windows 身份验证”。
您现在可以在类或方法上使用[Authorize] 来检查基本身份验证与从 RC2 开始的活动目录,您可以简单地使用组名ala [Authorize(Roles=@"DOMAIN\GROUP")]
现在已经过时且繁琐的替代方案(仍然有效):
如果您查看User.Claims,您可以看到每个用户组都存在groupid 键。在此基础上,您可以执行 [Authorize(Policy="FOOBAR")] 之类的操作,并通过
Startup.ConfigureServices 方法中定义它
services.AddAuthorization(
o => o.AddPolicy(
"FOOBAR",
p => p.RequireClaim("http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid",
"ENTER GROUP SID")
));
请注意,RequireClaim 的第二个参数是一个允许多个组的字符串数组。
还要注意通过这个命令行魔法dsquery group -name “ENTER GROUP NAME” | dsget group -sid找出组ID
【讨论】:
[Authorize(Roles=@"DOMAIN\GROUP")] 现在似乎可以与 RC2 一起使用。