AcquireCredentialsHandle(Negotiate)-Funktion
Die AcquireCredentialsHandle -Funktion (Negotiate) ruft ein Handle für bereits vorhandene Anmeldeinformationen eines Sicherheitsprinzipals ab. Dieses Handle ist für die Funktionen InitializeSecurityContext (Negotiate) und AcceptSecurityContext (Negotiate) erforderlich. Dabei kann es sich entweder um bereits vorhandene Anmeldeinformationen handeln, die über eine hier nicht beschriebene Systemanmeldung eingerichtet werden, oder der Aufrufer kann alternative Anmeldeinformationen bereitstellen.
Hinweis
Dies ist kein "Anmelden beim Netzwerk" und impliziert nicht das Sammeln von Anmeldeinformationen.
Syntax
SECURITY_STATUS SEC_Entry AcquireCredentialsHandle(
_In_ SEC_CHAR *pszPrincipal,
_In_ SEC_CHAR *pszPackage,
_In_ ULONG fCredentialUse,
_In_ PLUID pvLogonID,
_In_ PVOID pAuthData,
_In_ SEC_GET_KEY_FN pGetKeyFn,
_In_ PVOID pvGetKeyArgument,
_Out_ PCredHandle phCredential,
_Out_ PTimeStamp ptsExpiry
);
Parameter
-
pszPrincipal [in]
-
Ein Zeiger auf eine NULL-endende Zeichenfolge, die den Namen des Prinzipals angibt, auf dessen Anmeldeinformationen das Handle verweist.
Hinweis
Wenn der Prozess, der das Handle anfordert, keinen Zugriff auf die Anmeldeinformationen hat, gibt die Funktion einen Fehler zurück. Eine NULL-Zeichenfolge gibt an, dass der Prozess ein Handle für die Anmeldeinformationen des Benutzers erfordert, unter dessen Sicherheitskontext er ausgeführt wird.
-
pszPackage [in]
-
Ein Zeiger auf eine NULL-endende Zeichenfolge, die den Namen des Sicherheitspakets angibt, mit dem diese Anmeldeinformationen verwendet werden. Dies ist ein Sicherheitspaketname , der im Member Name einer SecPkgInfo-Struktur zurückgegeben wird, die von der EnumerateSecurityPackages-Funktion zurückgegeben wird. Nachdem ein Kontext eingerichtet wurde, kann QueryContextAttributes (Negotiate) aufgerufen werden, wobei ulAttribute auf SECPKG_ATTR_PACKAGE_INFO festgelegt ist, um Informationen zum verwendeten Sicherheitspaket zurückzugeben.
Um diese Funktion mithilfe des Negotiate-SSP erfolgreich aufzurufen, legen Sie diesen Parameter auf "Negotiate" fest.
-
fCredentialUse [in]
-
Ein Flag, das angibt, wie diese Anmeldeinformationen verwendet werden. Dieser Parameter kann einen der folgenden Werte annehmen.
Wert Bedeutung - SECPKG_CRED_AUTOLOGON_RESTRICTED
- 0x00000010
Die Sicherheit verwendet keine Standardanmeldeinformationen oder Anmeldeinformationen aus dem Anmeldeinformations-Manager.
Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Dieser Wert wird nicht unterstützt.- SECPKG_CRED_BOTH
Überprüfen Sie eingehende Anmeldeinformationen, oder verwenden Sie lokale Anmeldeinformationen, um ein ausgehendes Token vorzubereiten. Dieses Flag aktiviert beide anderen Flags. - SECPKG_CRED_INBOUND
Überprüfen Sie eingehende Serveranmeldeinformationen. Eingehende Anmeldeinformationen können mithilfe einer Authentifizierungsautorität überprüft werden, wenn InitializeSecurityContext (Negotiate) oder AcceptSecurityContext (Negotiate) aufgerufen wird. Wenn eine solche Autorität nicht verfügbar ist, schlägt die Funktion fehl und gibt SEC_E_NO_AUTHENTICATING_AUTHORITY zurück. Die Validierung ist paketspezifisch. - SECPKG_CRED_OUTBOUND
Zulassen, dass lokale Clientanmeldeinformationen ein ausgehendes Token vorbereiten. - SECPKG_CRED_PROCESS_POLICY_ONLY
- 0x00000020
Die Funktion verarbeitet die Serverrichtlinie und gibt SEC_E_NO_CREDENTIALS zurück, was angibt, dass die Anwendung zur Eingabe von Anmeldeinformationen auffordern soll.
Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Dieser Wert wird nicht unterstützt. -
pvLogonID [in]
-
Ein Zeiger auf einen lokal eindeutigen Bezeichner (LUID ), der den Benutzer identifiziert. Dieser Parameter wird für Dateisystemprozesse wie Netzwerkumleitungen bereitgestellt. Dieser Parameter kann NULL sein.
-
pAuthData [in]
-
Ein Zeiger auf paketspezifische Daten. Dieser Parameter kann NULL sein, was angibt, dass die Standardanmeldeinformationen für dieses Sicherheitspaket verwendet werden müssen. Um die angegebenen Anmeldeinformationen zu verwenden, übergeben Sie eine PSEC_WINNT_AUTH_IDENTITY_OPAQUE-Struktur , die von einem vorherigen Aufruf an die SspiPromptForCredentials-Funktion zurückgegeben wurde.
Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Der PSEC_WINNT_AUTH_IDENTITY_OPAQUE-Typ und die SspiPromptForCredentials-Funktion werden nicht unterstützt. Um die angegebenen Anmeldeinformationen zu verwenden, übergeben Sie einen Zeiger entweder an eine SEC_WINNT_AUTH_IDENTITY oder SEC_WINNT_AUTH_IDENTITY_EX Struktur, die diese Anmeldeinformationen enthält.
Die RPC-Laufzeit vergeht, was auch immer in RpcBindingSetAuthInfo bereitgestellt wurde.
Bei Verwendung des Negotiate-Pakets beträgt die maximale Zeichenlänge für Benutzername, Kennwort und Domäne 256, 256 bzw. 15.
-
pGetKeyFn [in]
-
Dieser Parameter wird nicht verwendet und sollte auf NULL festgelegt werden.
-
pvGetKeyArgument [in]
-
Dieser Parameter wird nicht verwendet und sollte auf NULL festgelegt werden.
-
phCredential [out]
-
Ein Zeiger auf eine CredHandle-Struktur zum Empfangen des Anmeldeinformationshandles.
-
ptsExpiry [out]
-
Ein Zeiger auf eine TimeStamp-Struktur , die den Zeitpunkt empfängt, zu dem die zurückgegebenen Anmeldeinformationen ablaufen. Der in dieser TimeStamp-Struktur zurückgegebene Wert hängt von der eingeschränkten Delegierung ab. Das Sicherheitspaket muss diesen Wert in Ortszeit zurückgeben.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt die Funktion SEC_E_OK zurück.
Wenn die Funktion fehlschlägt, gibt sie einen der folgenden Fehlercodes zurück.
Rückgabecode | Beschreibung |
---|---|
|
Es ist nicht genügend Arbeitsspeicher verfügbar, um die angeforderte Aktion abzuschließen. |
|
Es ist ein Fehler aufgetreten, der keinem SSPI-Fehlercode zugeordnet wurde. |
|
In der eingeschränkten Delegierung sind keine Anmeldeinformationen verfügbar. |
|
Der Aufrufer der Funktion verfügt nicht über die erforderlichen Anmeldeinformationen. |
|
Das angeforderte Sicherheitspaket ist nicht vorhanden. |
|
Die für das Paket angegebenen Anmeldeinformationen wurden nicht erkannt. |
Bemerkungen
Die AcquireCredentialsHandle-Funktion (Negotiate) gibt ein Handle für die Anmeldeinformationen eines Prinzipals zurück, z. B. eines Benutzers oder Clients, wie es von einer bestimmten eingeschränkten Delegierung verwendet wird. Dies kann das Handle für bereits vorhandene Anmeldeinformationen sein, oder die Funktion kann einen neuen Satz von Anmeldeinformationen erstellen und zurückgeben. Dieses Handle kann in nachfolgenden Aufrufen der Funktionen AcceptSecurityContext (Negotiate) und InitializeSecurityContext (Negotiate) verwendet werden.
Im Allgemeinen lässt AcquireCredentialsHandle (Negotiate) einem Prozess nicht zu, ein Handle für die Anmeldeinformationen anderer Benutzer abzurufen, die auf demselben Computer angemeldet sind. Ein Aufrufer mit SE_TCB_NAME Berechtigung hat jedoch die Möglichkeit, den Anmeldebezeichner (LUID) eines vorhandenen Anmeldesitzungstokens anzugeben, um ein Handle für die Anmeldeinformationen dieser Sitzung zu erhalten. In der Regel wird dies von Kernelmodusmodulen verwendet, die im Namen eines angemeldeten Benutzers handeln müssen.
Ein Paket kann die Funktion in pGetKeyFn aufrufen, die vom RPC-Laufzeittransport bereitgestellt wird. Wenn der Transport das Konzept des Rückrufs zum Abrufen von Anmeldeinformationen nicht unterstützt, muss dieser Parameter NULL sein.
Für Aufrufer im Kernelmodus müssen die folgenden Unterschiede beachtet werden:
- Die beiden Zeichenfolgenparameter müssen Unicode-Zeichenfolgen sein.
- Die Pufferwerte müssen im virtuellen Prozessspeicher und nicht aus dem Pool zugeordnet werden.
Wenn Sie die verwendung der zurückgegebenen Anmeldeinformationen abgeschlossen haben, geben Sie den von den Anmeldeinformationen verwendeten Arbeitsspeicher frei, indem Sie die Funktion FreeCredentialsHandle aufrufen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) |
Windows Server 2003 [nur Desktop-Apps] |
Header |
|
Bibliothek |
|
DLL |
|
Unicode- und ANSI-Name |
AcquireCredentialsHandleW (Unicode) und AcquireCredentialsHandleA (ANSI) |
Siehe auch