C# 在Active directory中存储(获取和设置)数据,例如连接字符串

C# 在Active directory中存储(获取和设置)数据,例如连接字符串,c#,active-directory,C#,Active Directory,是否有一种方法可以将全局数据(如连接字符串等)存储在active directory中,并在c#函数中获取? 糟糕的 AD ad = new ... ad.Save ("MyConnString",connectionString); ad.get... 以下是如何更新广告对象上的文本属性: var adObj = new DirectoryEntry($"LDAP://{distinguishedName}"); adObj.Properties[attribute].Value = "my

是否有一种方法可以将全局数据(如连接字符串等)存储在active directory中,并在c#函数中获取? 糟糕的

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

以下是如何更新广告对象上的文本属性:

var adObj = new DirectoryEntry($"LDAP://{distinguishedName}");
adObj.Properties[attribute].Value = "my connection string";
adObj.CommitChanges();
实际上,做这件事很容易。计划将是最困难的部分

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

  • 您将在哪个对象上存储数据(
    代码中的DifferentizedName
    ),以及
  • 您将使用哪个属性(代码中的
    属性
  • 如果连接字符串对于域中的每个人都是通用的,则可以将其存储在域的根目录下,但这会带来两个问题:

  • 写入域根目录的权限通常只授予域管理员
  • 可以从中选择的未使用属性更少
  • 如果将连接字符串写入每个用户对象,则更容易找到未使用的属性(如果使用Exchange,则会有一些以
    extensionAttribute
    开头的属性经常未使用),但您也会在每个帐户上复制该数据,并且希望没有人更改它


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

    这是更新AD对象上的文本属性的方法:

    var adObj = new DirectoryEntry($"LDAP://{distinguishedName}");
    adObj.Properties[attribute].Value = "my connection string";
    adObj.CommitChanges();
    
    实际上,做这件事很容易。计划将是最困难的部分

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

  • 您将在哪个对象上存储数据(
    代码中的DifferentizedName
    ),以及
  • 您将使用哪个属性(代码中的
    属性
  • 如果连接字符串对于域中的每个人都是通用的,则可以将其存储在域的根目录下,但这会带来两个问题:

  • 写入域根目录的权限通常只授予域管理员
  • 可以从中选择的未使用属性更少
  • 如果将连接字符串写入每个用户对象,则更容易找到未使用的属性(如果使用Exchange,则会有一些以
    extensionAttribute
    开头的属性经常未使用),但您也会在每个帐户上复制该数据,并且希望没有人更改它


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

    您可以做到这一点,但是任何可以查询ldap的人都可以看到它。这是做这项工作的错误工具。如果此应用程序位于azure中,您可以将连接字符串存储在azure Key Vault中。我的数据不是敏感数据,我需要在一个简单的工具中发布它们,我该如何做。连接字符串不敏感?我不知道你所说的“发布”是什么意思,但数据通常存储在数据库或文件中,甚至应用程序设置中。Active Directory不适用于此类数据—这是非常特定于应用程序的,甚至可能取决于安装选项。将其存储在所属的应用程序配置文件中扫描您解释为什么要将连接字符串存储在Active Directory中的用例?您可以做到这一点,但是任何可以查询ldap的人都可以看到它。这是做这项工作的错误工具。如果此应用程序位于azure中,您可以将连接字符串存储在azure Key Vault中。我的数据不是敏感数据,我需要在一个简单的工具中发布它们,我该如何做。连接字符串不敏感?我不知道你所说的“发布”是什么意思,但数据通常存储在数据库或文件中,甚至应用程序设置中。Active Directory不适用于此类数据—这是非常特定于应用程序的,甚至可能取决于安装选项。将其存储在所属的应用程序配置文件中扫描您解释为什么要将连接字符串存储在Active Directory中的用例?