Функция AuthzInitializeContextFromSid (authz.h)

Функция AuthzInitializeContextFromSid создает контекст клиента в пользовательском режиме из идентификатора безопасности пользователя (SID). Идентификаторы безопасности домена извлекают атрибуты группы маркеров из Active Directory.

Примечание По возможности вызовите функцию AuthzInitializeContextFromToken вместо AuthzInitializeContextFromSid. Дополнительные сведения см. в подразделе "Примечания".

 

Синтаксис

AUTHZAPI BOOL AuthzInitializeContextFromSid(
  [in]           DWORD                         Flags,
  [in]           PSID                          UserSid,
  [in, optional] AUTHZ_RESOURCE_MANAGER_HANDLE hAuthzResourceManager,
  [in]           PLARGE_INTEGER                pExpirationTime,
  [in]           LUID                          Identifier,
  [in, optional] PVOID                         DynamicGroupArgs,
  [out]          PAUTHZ_CLIENT_CONTEXT_HANDLE  phAuthzClientContext
);

Параметры

[in] Flags

Определены следующие флаги.

Начиная с Windows 8 и Windows Server 2012, при вызове этой функции для удаленного дескриптора контекста верхние 16 бит должны быть равны нулю.

Значение Значение
0 (0x0)
Значение по умолчанию.

AuthzInitializeContextFromSid пытается получить сведения о группе маркеров пользователя, выполнив вход S4U.

Если вход s4U не поддерживается доменом пользователя или вызывающим компьютером, AuthzInitializeContextFromSid запрашивает у объекта учетной записи пользователя сведения о группе. При запросе учетной записи напрямую некоторые группы, представляющие характеристики входа, такие как Network, Interactive, Anonymous, Network Service или Local Service, опущены. Приложения могут явно добавлять такие идентификаторы безопасности группы, реализуя функцию AuthzComputeGroupsCallback или вызывая функцию AuthzAddSidsToContext .

AUTHZ_SKIP_TOKEN_GROUPS
2 (0x2)
Заставляет AuthzInitializeContextFromSid пропускать все оценки группы. При использовании этого флага возвращаемый контекст содержит только идентификатор безопасности, указанный параметром UserSid . Указанный идентификатор безопасности может быть произвольным идентификатором безопасности или идентификатором безопасности для конкретного приложения. Другие идентификаторы безопасности можно добавить в этот контекст, реализовав функцию AuthzComputeGroupsCallback или вызвав функцию AuthzAddSidsToContext .
AUTHZ_REQUIRE_S4U_LOGON
4 (0x4)
Вызывает сбой AuthzInitializeContextFromSid , если службы Windows для пользователя недоступны для получения сведений о группе маркеров.

Windows XP: Этот флаг не поддерживается.

AUTHZ_COMPUTE_PRIVILEGES
8 (0x8)
Заставляет AuthzInitializeContextFromSid получать привилегии для нового контекста. Если эта функция выполняет вход S4U, она получает привилегии из маркера. В противном случае функция получает привилегии из всех идентификаторов безопасности в контексте.

[in] UserSid

Идентификатор безопасности пользователя, для которого будет создан контекст клиента. Это должна быть допустимая учетная запись пользователя или компьютера, если не используется флаг AUTHZ_SKIP_TOKEN_GROUPS.

[in, optional] hAuthzResourceManager

Дескриптор для диспетчера ресурсов, создающий этот контекст клиента. Этот дескриптор хранится в структуре контекста клиента.

Начиная с Windows 8 и Windows Server 2012, диспетчер ресурсов может быть локальным или удаленным и получается путем вызова функции AuthzInitializeRemoteResourceManager.

[in] pExpirationTime

Дата и время окончания срока действия маркера. Если значение не передается, срок действия маркера не истечет. Время окончания срока действия в настоящее время не применяется.

[in] Identifier

Конкретный идентификатор диспетчера ресурсов. Этот параметр в настоящее время не используется.

[in, optional] DynamicGroupArgs

Указатель на параметры, передаваемые функции обратного вызова, которая вычисляет динамические группы. Этот параметр может иметь значение NULL , если в функцию обратного вызова не передаются динамические параметры.

Начиная с Windows 8 и Windows Server 2012 этот параметр должен иметь значение NULL, если диспетчер ресурсов является удаленным. В противном случае будет задано ERROR_NOT_SUPPORTED.

[out] phAuthzClientContext

Указатель на дескриптор контекста клиента, создаваемого функцией AuthzInitializeContextFromSid . Завершив использование дескриптора, освободите его, вызвав функцию AuthzFreeContext .

Возвращаемое значение

Если функция выполняется успешно, функция возвращает ненулевое значение.

Если функция завершается сбоем, она возвращает ноль. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

По возможности вызовите функцию AuthzInitializeContextFromToken вместо AuthzInitializeContextFromSid. AuthzInitializeContextFromSid пытается получить сведения, доступные в маркере входа, если клиент фактически вошел в систему. Фактический маркер входа предоставляет дополнительные сведения, такие как тип входа и свойства входа, а также отражает поведение пакета проверки подлинности, используемого для входа. Контекст клиента, созданный AuthzInitializeContextFromToken , использует маркер входа, а полученный контекст клиента является более полным и точным, чем контекст клиента, созданный AuthzInitializeContextFromSid.

Эта функция разрешает только допустимые идентификаторы безопасности пользователя.

Windows XP: Эта функция разрешает членство в группах для допустимых идентификаторов безопасности пользователей и групп (если не используется флаг AUTHZ_SKIP_TOKEN_GROUPS). Поддержка разрешения членства идентификаторов безопасности групп может быть изменена или недоступна в последующих версиях.

Эта функция вызывает функцию обратного вызова AuthzComputeGroupsCallback для добавления идентификаторов безопасности в только что созданный контекст.

Важно Приложения не должны предполагать, что вызывающий контекст имеет разрешение на использование этой функции. Функция AuthzInitializeContextFromSid считывает атрибут tokenGroupsGlobalAndUniversal идентификатора безопасности, указанного в вызове , для определения членства текущего пользователя в группах. Если объект пользователя находится в Active Directory, вызывающий контекст должен иметь доступ на чтение к атрибуту tokenGroupsGlobalAndUniversal объекта пользователя. При создании нового домена для совместимости доступа по умолчанию выбран параметр Разрешения, совместимые с операционными системами Windows 2000 и Windows Server 2003. Если этот параметр установлен, группа доступа, совместимого с Windows 2000 , включает только встроенные идентификаторы безопасности прошедших проверку подлинности пользователей . Поэтому приложения могут не иметь доступа к атрибуту tokenGroupsGlobalAndUniversal; в этом случае функция AuthzInitializeContextFromSid завершается сбоем с ACCESS_DENIED. Приложения, использующие эту функцию, должны правильно обрабатывать эту ошибку и предоставлять вспомогательную документацию. Чтобы упростить предоставление учетным записям разрешения на запрос сведений о группе пользователя, добавьте учетные записи, которым требуется возможность поиска сведений о группе, в группу доступа авторизации Windows.
 

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header authz.h
Библиотека Authz.lib
DLL Authz.dll
Распространяемые компоненты Пакет средств администрирования Windows Server 2003 в Windows XP

См. также раздел

Разрешение анонимного доступа

AuthzFreeContext

Базовые функции контроль доступа