【问题标题】:How to use active Directory for ASP.Net 5 (MVC6) Intranet application如何为 ASP.Net 5 (MVC6) Intranet 应用程序使用 Active Directory
【发布时间】:2015-12-30 23:15:26
【问题描述】:

我正在开发一个 Intranet 应用程序,并希望使用现有组织的 Active Directory 进行用户身份验证和基于策略的角色授权。

有人能指出我正确的方向吗?我有点困惑(实际上很困惑)。

谢谢

【问题讨论】:

    标签: asp.net active-directory ldap asp.net-core-mvc


    【解决方案1】:

    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

    【讨论】:

    • 如果用户没有被授权,你将如何重定向到未授权的View()??
    • @HariGillala 默认情况下它只是抛出一个 http 500,像任何其他自定义错误页面一样处理它。发布一个具体问题。
    • [Authorize(Roles=@"DOMAIN\GROUP")] 现在似乎可以与 RC2 一起使用。
    • @Jani 感谢您指出这一点!我认为这是由于 github.com/aspnet/Common/issues/85 的一个子集,在某些情况下它可能会继续存在,直到引用的错误完全修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多