【问题标题】:Save custom user roles in Active Directory user properties在 Active Directory 用户属性中保存自定义用户角色
【发布时间】:2016-09-12 16:59:48
【问题描述】:

是否可以在 Active Directory 用户中保存自定义字符串?例如,一个包含user-roles 列表的字符串,用一些分号分隔?例如,DirectoryEntry 包含类似 userRoles 的内容,其值为 read;write; 或类似内容?

我正在尝试使用 c# 设置和访问这些信息。

非常感谢!

【问题讨论】:

  • 虽然您已接受@DVK 答案作为解决方案,但我想在他的答案之上添加一些内容供您考虑。 Active Directory Lightweight Directory ServicesADLDS 非常适合您要完成的工作。
  • 谢谢,我去看看:)

标签: c# .net active-directory roles directoryentry


【解决方案1】:

您基本上有三种选择。

  1. 如果您的组织中安装了 Exchange,它会自动在 AD 中添加 extensionAttribute1 - 15,可用于存储用户定义的数据。
  2. 您可以使用未使用的字段(例如 physicalDeliveryOffice)来存储自定义数据。
  3. 如果(如果)您可以让您的网络管理员相信这样做的好处,那么您实际上可以扩展 Active Directory 架构来存储您自己的用户定义数据。

在所有情况下,您都会查询这些字段(例如,使用System.DirectoryServices.AccountManagement)以与数据进行交互。 Active Directory 并不意味着是一个事务性数据库。如果您需要存储应用程序可以访问的有关用户的自定义数据,您最好查看 ASP.NET Membership and Roles(较旧但经过验证的技术)或 ASP.NET Identity 之类的内容。由于我更熟悉成员资格和角色,因此我将使用它作为示例。身份验证(成员资格)和授权(角色)方面是分开的,这意味着您的用户可以使用 AD 使用内置提供程序进行身份验证,然后使用自定义角色提供程序实现(例如)根据 SQL 检查他们的角色成员资格数据库、Web 服务、XML 文件或其他任何你能想到的东西。您甚至可以检查多个来源(例如 AD 组和 SQL 数据库),如果性能有问题,则实施缓存等等。

Active Directory 有一些缺点,例如:

  • 开发人员通常不会对其进行控制,这意味着您需要在任何时候扩展应用程序时都会出现繁文缛节
  • 根据查询 AD 的方式,与 SQL 数据库之类的数据库相比,性能可能会非常差
  • 如果某些错误损坏了您的自定义数据,请说服服务器人员恢复 Active Directory,祝您好运
  • 无法保证新的网络管理员实习生不会决定在您的自定义字段中添加一些其他不兼容的数据
  • 如果您想从应用程序更新字段中的数据,您必须说服您的网络管理员/安全人员,您的应用程序可以以安全的方式执行此操作,不会冒用户修改其他更关键的风险数据

因此,虽然可以在 AD 中存储自定义数据,但它通常是不可取的、劳动密集型且不安全的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多