具有自定义角色和 Active Directory 的 ASP MVC 5 Windows 身份验证

Posted

技术标签:

【中文标题】具有自定义角色和 Active Directory 的 ASP MVC 5 Windows 身份验证【英文标题】:ASP MVC 5 Windows authentication with custom roles and Active Directory 【发布时间】:2016-10-19 01:46:51 【问题描述】:

我有一个 MVC 5 应用程序,它设置了 Windows 身份验证和我自己的用于授权的自定义角色表。如果用户存在于我的应用程序数据库中,这很好用 - 我的用户表中的用户名映射到活动目录中的用户名。

我的问题是如何使我的用户表与活动目录保持同步。每当雇用新用户时,都必须将新记录添加到我的 Intranet 应用程序中,以确保该用户可以访问它。

有没有办法将用户从活动目录加载到我自己的用户表中,也许是某种预定的作业,或者有更好的方法来实现我想要做的事情?

【问题讨论】:

【参考方案1】:

我认为随着您的业务增长,同步两个数据库实例(AD 数据库和您的应用程序数据库)将成为管理问题。甚至,添加新用户和删除用户也是日常工作,因此在这两种情况下,您都需要执行某种操作来在应用数据库中添加或删除用户。

您为什么不要求您的团队授予您对 AD 数据库的访问权限并将其用于您的 Intranet 应用程序,这是我在过去的组织中使用的,并且效果很好。

【讨论】:

【参考方案2】:

可以以编程方式使用 AD。只要寻找 LDAP 的东西,你就会发现很多例子。这是一个可以帮助您入门的方法:Connect to Active Directory via LDAP

如果您的应用程序允许人们注册,则实现您自己的自定义会员提供程序,该提供程序与 AD 对话。您可以在 AD 中创建用户,您还必须通过在 AD 上设置的密码要求,这很可能是一件好事。角色信息也可以存储在那里,也不需要本地自定义角色表。

【讨论】:

以上是关于具有自定义角色和 Active Directory 的 ASP MVC 5 Windows 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

具有 Active Directory 和数据库角色的 Spring Security

通过用户的自定义属性搜索 Active Directory B2C

Azure Active Directory RBAC 不返回承载令牌中的角色

利用 Active Directory 的 REST API 授权方法

Azure Active Directory:使用 PowerShell 将服务主体添加到目录读取者角色

Active Directory 角色:用户和读者之间的区别