首页 > 解决方案 > 在 Active Directory 中存储(获取和设置)数据,例如连接字符串

问题描述

有没有办法在活动目录中存储全局数据(如连接字符串等)并在 c# 函数中获取它?类似的东西

AD ad = new ...
ad.Save ("MyConnString",connectionString);
ad.get...

标签: c#active-directory

解决方案


这是您将如何更新 AD 对象上的文本属性:

var adObj = new DirectoryEntry($"LDAP://{distinguishedName}");
adObj.Properties[attribute].Value = "my connection string";
adObj.CommitChanges();

实际上,这样做是容易的部分。计划它将是更难的部分。

Active Directory 由具有属性的对象组成。所以是的,您可以将文本存储在任何文本属性中,但您必须决定:

  1. 您将在哪个对象上存储数据(distinguishedName在代码中),以及
  2. 您将使用哪个属性(attribute在代码中)

如果连接字符串对域中的每个人都是通用的,则可以将其存储在域的根目录中,但这会带来两个问题:

  1. 写入域根目录的权限通常只授予域管理员
  2. 您可以选择的未使用属性更少。

如果您将连接字符串写入每个用户对象,则更容易找到未使用的属性(如果您使用 Exchange,则有几个以extensionAttribute通常未使用的属性开头),但您也在每个帐户上复制该数据你必须希望没有人改变它。

像上面的评论者一样,我建议您将其存储在其他地方。如果它是每个域的唯一连接字符串,那么您可以只存储一个映射表(此域 = 此连接字符串)。用户登录后,您可以查看他们所在的 AD 域并获取正确的连接字符串。


推荐阅读