c# - 在 Active Directory 中存储(获取和设置)数据,例如连接字符串
问题描述
有没有办法在活动目录中存储全局数据(如连接字符串等)并在 c# 函数中获取它?类似的东西
AD ad = new ...
ad.Save ("MyConnString",connectionString);
ad.get...
解决方案
这是您将如何更新 AD 对象上的文本属性:
var adObj = new DirectoryEntry($"LDAP://{distinguishedName}");
adObj.Properties[attribute].Value = "my connection string";
adObj.CommitChanges();
实际上,这样做是容易的部分。计划它将是更难的部分。
Active Directory 由具有属性的对象组成。所以是的,您可以将文本存储在任何文本属性中,但您必须决定:
- 您将在哪个对象上存储数据(
distinguishedName
在代码中),以及 - 您将使用哪个属性(
attribute
在代码中)
如果连接字符串对域中的每个人都是通用的,则可以将其存储在域的根目录中,但这会带来两个问题:
- 写入域根目录的权限通常只授予域管理员
- 您可以选择的未使用属性更少。
如果您将连接字符串写入每个用户对象,则更容易找到未使用的属性(如果您使用 Exchange,则有几个以extensionAttribute
通常未使用的属性开头),但您也在每个帐户上复制该数据你必须希望没有人改变它。
像上面的评论者一样,我建议您将其存储在其他地方。如果它是每个域的唯一连接字符串,那么您可以只存储一个映射表(此域 = 此连接字符串)。用户登录后,您可以查看他们所在的 AD 域并获取正确的连接字符串。
推荐阅读
- r - 使用二进制变量进行聚类
- c++ - 以 std::async 开始的函数在经过多次迭代后崩溃
- php - 基于关系获取集合中 Laravel 模型的列表和计数
- php - 在php中按姓氏对多维数组进行排序
- firebird - 在文本中发现无效字符
- angular - Angular 7 路由在 IE11 上无法正常工作
- swift - 在不使用 CGWindowListCreateImage 函数的情况下将桌面捕获为图像
- xslt - 只有 name 属性的 xsl:template 和 xsl:function 有什么区别
- dart - 隔离的端口发送消息是否使用套接字?
- java - AppEngine Java8 应用缺少 appengine-api-1.0