Вот как вы бы обновили текстовый атрибут объекта AD:
var adObj = new DirectoryEntry($"LDAP://{distinguishedName}");
adObj.Properties[attribute].Value = "my connection string";
adObj.CommitChanges();
На самом деле делает это простая часть.Планировать это будет сложнее.
Active Directory состоит из объектов с атрибутами.Так что да, вы можете хранить текст в любом текстовом атрибуте, но вам придется решить:
- На каком объекте вы будете хранить данные (
distinguishedName
в коде) и - Какой атрибут вы будете использовать (
attribute
в коде)
Если строка подключения является общей для всех в домене, вы можете сохранить ее в корне домена, но это происходитс двумя проблемами:
- Разрешения на запись в корень домена обычно предоставляются только администраторам домена
- Существует меньше неиспользуемых атрибутов, из которых вы можете выбрать.
Если вы напишите строку подключения для каждого объекта пользователя, вам будет легче найти неиспользуемый атрибут (если вы используете Exchange, то есть несколько, которые начинаются с extensionAttribute
, которые часто не используются), но вытакже дублируют эти данные на каждой учетной записи, и вам придется надеяться, что никто не изменит их.
Как и вышеупомянутые комментарии, я бы посоветовал вам сохранить их где-то еще.Если это уникальная строка подключения для каждого домена, вы можете просто сохранить таблицу сопоставления (этот домен = эта строка подключения).Когда пользователь войдет в систему, вы увидите, в каком домене AD он находится, и получите правильную строку подключения.