Работа с менеджером безопасности

Для работы с менеджером безопасности предназначен интерфейс IMetabaseSecurity. Доступ к менеджеру безопасности можно получить, используя свойство IMetabase.Security.

Var
    Mb: IMetabase;
    MbSec: IMetabaseSecurity;
Begin
    Mb := MetabaseClass.Active;
    // Менеджер безопасности
    MbSec := Mb.Security;
    // ...
    // Дальнейшая работа с менеджером безопасности
    // ...

Для того, чтобы была возможность вносить изменения в настройки менеджера безопасности, необходимо в коде с помощью метода IMetabase.RequestLicense получить лицензию «Администрирование». После внесения необходимых изменений и сохранения настроек менеджера безопасности лицензия должна быть освобождена. Для этого соответствующей переменной присвойте пустое значения:

Var
    Mb: IMetabase;
    MbSec: IMetabaseSecurity;
    Lic: Object;
Begin
    Mb := MetabaseClass.Active;
    // Получение лицензии для возможности работы с менеджером безопасности
    Lic := MB.RequestLicense(UiLicenseFeatureType.Adm);
    // Менеджер безопасности
    MbSec := Mb.Security;
    // ...
    // Внесение изменений в настройки менеджера безопасности
    // ...
    // Применение изменений
    MbSec.Apply;
    // Освобождение лицензии
    Lic := Null;

При работе с субъектами безопасности или при изменении прав доступа требуются учётные данные пользователя, обладающего правами администрирования пользователей на сервере СУБД. При работе в веб-приложении/настольном приложении для ввода таких учётных данных вызывается диалог «Авторизация в базе данных». Введённые учётные данные кешируются и используются в рамках текущей сессии с репозиторием.

При работе из Fore для указания учётных данных используется свойство ILogonSession.Credentials. Если текущий пользователь репозитория обладает правами администрирования на сервере СУБД, то в качестве значения для ILogonSession.Credentials можно указать значение свойства ILogonSession.LogonCredentials:

Var
    Mb: IMetabase;
    Session: ILogonSession;
    Package: ISecurityPackage;
    PswCreds: IPasswordCredentials;
Begin
    Mb := MetabaseClass.Active;
    // Менеджер безопасности
    Session := Mb.LogonSession;
    // Если текущий пользователь обладает правами администрирования на уровне СУБД, то указываем его учётные данные:
    Session.Credentials("$SYSTEM"True) := Session.LogonCredentials;
    // Или создаём новые учётные данные:
    Package := New StandardSecurityPackage.Create;
    PswCreds := Package.CreateCredentials(AuthenticationMode.Password) As IPasswordCredentials;
    PswCreds.UserName := "Admin";
    PswCreds.Password := "Password";
    Session.Credentials("$SYSTEM"True) := PswCreds;
    //...
    // Дальнейшая работа с менеджером безопасности
    //...

Более подробно различные аспекты работы в менеджере безопасности описаны в следующих подразделах:

См. также:

Общие принципы программирования с использованием сборки Metabase