RenameInDBMS: Boolean;
Свойство RenameInDBMS определяет признак переименования доменного пользователя на уровне СУБД в процессе синхронизации атрибутов пользователя с атрибутами LDAP-каталога.
Допустимые значения:
True. По умолчанию. В процессе синхронизации атрибутов пользователя с атрибутами LDAP-каталога выполняется переименование доменного пользователя на уровне СУБД по атрибуту SamAccountName или UserPrincipalName, в зависимости от значения атрибута USEUPN в файле Metabases.xml;
False. В процессе синхронизации атрибутов пользователя с атрибутами LDAP-каталога не выполняется переименование доменного пользователя на уровне СУБД.
Переименование доменного пользователя доступно только в СУБД PostgreSQL при выполнении условий:
доменный пользователь не является подключаемым с сервера. Убедитесь, что свойство IMetabaseUser.External возвращает значение False;
не используется встроенная авторизация. Убедитесь, что свойство IMetabasePolicy.CheckUserPassword возвращает значение False.
Синхронизация атрибутов доменного пользователя с атрибутами LDAP-каталога доступна пользователям, обладающим привилегиями «Изменение прав пользователей, раздача ролей, изменение политики», «Применение прав пользователей на уровне СУБД». Для определения учётных данных, которые будут использоваться при работе с менеджером безопасности, используйте свойство ILogonSession.Credentials.
Синхронизация выполняется при обновлении пользователей с помощью методов IMetabaseSecurity.CreateUsersUpdate, IMetabaseSecurity.UpdateUsers, если задано значение перечисления MetabaseSecuritySubjectUpdateType.LDAPSync в свойстве IMetabaseUsersUpdate.ItemSetup. Для добавления доменного пользователя в обновление используйте метод IMetabaseUsersUpdate.Add.
Для выполнения примера в менеджере безопасности предполагается наличие доменного пользователя с наименованием «DOMAIN\USER».
Добавьте ссылку на системную сборку Metabase.
Sub UserProc;
Var
MB: IMetabase;
MS: IMetabaseSecurity;
Policy: IMetabasePolicy;
Session: ILogonSession;
User: IMetabaseUser;
UsUpdate: IMetabaseUsersUpdate;
UsUpdateSec: IMetabaseSecuritySubjectUpdateSetup;
Lic: Object;
UserName: String;
Begin
MB := MetabaseClass.Active;
// Получим информацию о текущей сессии с репозиторием
Session := MB.LogonSession;
// Укажем учётные данные текущего пользователя, если он обладает правами администратора на уровне СУБД
Session.Credentials("$SYSTEM", True) := Session.LogonCredentials;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := MB.RequestLicense(UiLicenseFeatureType.Adm);
MS := MB.Security;
// Создадим объект обновления пользователей
UsUpdate := MS.CreateUsersUpdate;
// Получим доменного пользователя, для которого необходимо выполнить синхронизацию с LDAP
UserName := "DOMAIN\USER";
User := MS.ResolveName(UserName) As IMetabaseUser;
If User <> Null Then
If User.IsNT And User.External = False Then
// Выведем атрибуты доменного пользователя до синхронизации
Debug.WriteLine("Атрибуты доменного пользователя до синхронизации с LDAP:");
Debug.WriteLine("Name " + User.Name + ":");
Debug.WriteLine("SID: " + User.Sid.AsString);
Debug.WriteLine("UPN: " + User.UserPrincipalName);
Debug.WriteLine("Description: " + User.Description);
Debug.WriteLine("");
// Добавим доменного пользователя в обновление
UsUpdate.Add(User);
// Установим способ обновления - синхронизация атрибутов с LDAP
UsUpdateSec := UsUpdate.ItemSetup(0);
UsUpdateSec.UpdateType := MetabaseSecuritySubjectUpdateType.LDAPSync;
// Переименуем доменного пользователя на уровне СУБД, если не используется встроенная авторизация
Policy := MS.Policy;
If Policy.CheckUserPassword = False Then
UsUpdateSec.RenameInDBMS := True;
End If;
// Обновим информацию о доменном пользователе и выполним синхронизацию атрибутов
MS.UpdateUsers(UsUpdate);
// Выведем атрибуты доменного пользователя после синхронизации
Debug.WriteLine("Атрибуты доменного пользователя после синхронизации с LDAP:");
Debug.WriteLine("Name: " + User.Name);
Debug.WriteLine("SID: " + User.Sid.AsString);
Debug.WriteLine("UPN: " + User.UserPrincipalName);
Debug.WriteLine("Description: " + User.Description);
Debug.WriteLine("");
// Сохраним изменения
MS.Apply;
End If;
Else
Debug.WriteLine("Пользователь " + UserName + " не найден в менеджере безопасности");
End If;
// Освободим лицензию
Lic := Null;
End Sub UserProc;
В результате выполнения примера будет выполнена синхронизация атрибутов доменного пользователя с атрибутами LDAP-каталога и переименование пользователя на уровне СУБД. В консоль будет выведена информация о значениях атрибутов пользователя до синхронизации и после:
Атрибуты доменного пользователя до синхронизации с LDAP:
Name: DOMAIN\USER
SID: S-1-5-21-2798585636-1410933581-2846741107-2611
UPN: DOMAIN\USER
Description: Пользователь 1
Атрибуты доменного пользователя после синхронизации с LDAP:
Name: DOMAIN\CHANGED_USER_NAME
SID: S-1-5-21-2798585636-1410933581-2846741107-2611
UPN: DOMAIN\CHANGED_USER_NAME
Description: Пользователь 1
Если пользователь «DOMAIN\USER» не найден в менеджере безопасности, то в консоль будет выведено соответствующее сообщение.
См. также: