ISecuritySubjectsSearch.DomainCredentials

Синтаксис Fore

DomainCredentials: IDomainCredentials;

Синтаксис Fore.NET

DomainCredentials: Prognoz.Platform.Interop.Metabase.IDomainCredentials;

Описание

Свойство DomainCredentials определяет учетные данные, под которыми будет осуществляться авторизация в домене при поиске.

Пример Fore

Для выполнения примера добавьте ссылку на системную сборку Metabase.

Sub FindSubject;
Var
    MB: IMetabase;
    Pack: ISecurityPackage;
    DomainCreds: IDomainCredentials;
    Search: ISecuritySubjectsSearch;
    Subjects: ISecuritySubjects;
    Subject: ISecuritySubject;
Begin
    MB := MetabaseClass.Active;
    Search := MB.Security.NewSubjectsSearch;
    Search.NameCriteria := "TestDomain\*";
    Search.SubjectCriteria(SecuritySubjectType.User) := True;
    Search.SubjectCriteria(SecuritySubjectType.Group) := True;
    Search.AreaIncludeDB := False;
    Search.AreaIncludeNT := True;
    //Настройки для поиска в домене
    Pack := New StandardSecurityPackage.Create;
    //Использовать учетные данные текущего пользователя, авторизовавшегося в домене
    DomainCreds := Pack.CreateCredentials(AuthenticationMode.Domain) As IDomainCredentials;
    DomainCreds.LogonAsCurrentUser := True;
    Search.DomainSelectCriteria := DomainSelectType.SpecifiedDomain;
    Search.ProtocolSelectCriteria := ProtocolSelectType.GC;
    //Поиск
    Search.ExecuteSearch;
    Subjects := Search.Subjects;
    If Subjects.Count > 0 Then
        For Each Subject In Subjects Do
            Debug.WriteLine("Distinguished Name: " + Subject.DistinguishedName);
            If Subject.Type = SecuritySubjectType.User Then
                Debug.WriteLine("Domain User Name: " + Subject.UserPrincipalName);
            End If;
        End For;
    End If;
End Sub FindSubject;

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

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Pack: ISecurityPackage = New StandardSecurityPackageClass();
    DomainCreds: IDomainCredentials;
    Search: ISecuritySubjectsSearch;
    Subjects: ISecuritySubjects;
    Subject: ISecuritySubject;
Begin
    MB := Params.Metabase;
    Search := MB.Security.NewSubjectsSearch();
    Search.NameCriteria := "TestDomain\*";
    Search.SubjectCriteria[SecuritySubjectType.sstUser] := True;
    Search.SubjectCriteria[SecuritySubjectType.sstGroup] := True;
    Search.AreaIncludeDB := False;
    Search.AreaIncludeNT := True;
    //Настройки для поиска в домене
    //Использовать учетные данные текущего пользователя, авторизовавшегося в домене
    DomainCreds := Pack.CreateCredentials(AuthenticationMode.amDomain) As IDomainCredentials;
    DomainCreds.LogonAsCurrentUser := True;
    Search.DomainSelectCriteria := DomainSelectType.dstSpecifiedDomain;
    Search.ProtocolSelectCriteria := ProtocolSelectType.pstGC;
    //Поиск
    Search.ExecuteSearch();
    Subjects := Search.Subjects;
    If Subjects.Count > 0 Then
        For Each Subject In Subjects Do
            System.Diagnostics.Debug.WriteLine("Distinguished Name: " + Subject.DistinguishedName);
            If Subject.Type = SecuritySubjectType.sstUser Then
                System.Diagnostics.Debug.WriteLine("Domain User Name: " + Subject.UserPrincipalName);
            End If;
        End For;
    End If;
End Sub;

См. также:

ISecuritySubjectsSearch