Abrufen alternativer Digestanmeldeinformationen
Füllen Sie zum Abrufen anderer Anmeldeinformationen als denen, die der aktuellen Anmeldesitzungzugeordnet sind, eine SEC _ WINNT-AUTH _ _ IDENTITY-Struktur mit Informationen für den alternativen Sicherheitsprinzipalauf. Übergeben Sie die -Struktur mithilfe des pAuthData-Parameters an die AcquireCredentialsHandle-Funktion.
In der folgenden Tabelle werden die Elemente der SEC _ WINNT _ AUTH _ IDENTITY-Struktur beschrieben.
| Member | BESCHREIBUNG |
|---|---|
| Benutzer | Auf NULL endende Zeichenfolge, die den Namen des Sicherheitsprinzipals enthält, dessen Anmeldeinformationen zum Einrichten eines Sicherheitskontexts verwendet werden. |
| UserLength | Die Länge des User-Members in Zeichen. Weglassen sie den abschließenden NULL-Wert. |
| Domäne | Auf NULL endende Zeichenfolge, die die Domäne identifiziert, die das Konto des Sicherheitsprinzipals enthält. |
| DomainLength | Die Länge des Domänenmembers in Zeichen. Weglassen sie den abschließenden NULL-Wert. |
| Kennwort | Auf NULL endende Zeichenfolge, die das Kennwort des Sicherheitsprinzipals enthält. |
| PasswordLength | Die Länge des Kennwortmembers in Zeichen. Weglassen sie den abschließenden NULL-Wert. |
| Flags | Gibt an, ob die Zeichenfolgenmember im ANSI- oder Unicode-Format vorliegen. |
In der folgenden Tabelle sind die gültigen Werte für den Flags-Member der -Struktur aufgeführt.
| Konstante | BESCHREIBUNG |
|---|---|
| SEC _ WINNT _ AUTH _ IDENTITY _ ANSI | Zeichenfolgen in dieser Struktur liegen im ANSI-Format vor. |
| SEC _ WINNT _ AUTH _ IDENTITY _ UNICODE | Zeichenfolgen in dieser Struktur haben das Unicode-Format. |
Die Struktur und Konstanten werden in der Rpcdce.h-Headerdatei deklariert, die mit dem Platform Software Development Kit (SDK) verteilt wird.
Im folgenden Beispiel wird ein clientseitiger Aufruf zum Abrufen von Digest-Anmeldeinformationen für ein bestimmtes Benutzerkonto veranschaulicht.
#include <windows.h>
#ifdef UNICODE
ClientAuthID.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE;
#else
ClientAuthID.Flags = SEC_WINNT_AUTH_IDENTITY_ANSI;
#endif
void main()
{
SECURITY_STATUS SecStatus;
TimeStamp tsLifetime;
CredHandle hCred;
SEC_WINNT_AUTH_IDENTITY ClientAuthID;
LPTSTR UserName = TEXT("ASecurityPrinciple");
LPTSTR DomainName = TEXT("AnAuthenticatingDomain");
// Initialize the memory.
ZeroMemory( &ClientAuthID, sizeof(ClientAuthID) );
// Specify string format for the ClientAuthID structure.
// Specify an alternate user, domain and password.
ClientAuthID.User = (unsigned char *) UserName;
ClientAuthID.UserLength = _tcslen(UserName);
ClientAuthID.Domain = (unsigned char *) DomainName;
ClientAuthID.DomainLength = _tcslen(DomainName);
// Password is an application-defined LPTSTR variable
// containing the user password.
ClientAuthID.Password = Password;
ClientAuthID.PasswordLength = _tcslen(Password);
// Get the client side credential handle.
SecStatus = AcquireCredentialsHandle (
NULL, // Default principal.
WDIGEST_SP_NAME, // The Digest SSP.
SECPKG_CRED_OUTBOUND, // Client will use the credentials.
NULL, // Do not specify LOGON id.
&ClientAuthID, // User information.
NULL, // Not used with Digest SSP.
NULL, // Not used with Digest SSP.
&hCred, // Receives the credential handle.
&tsLifetime // Receives the credential time limit.
);
}
Die _ tcslen-Funktion gibt die Zeichenfolgenlänge in Zeichen zurück, ohne das abschließende NULL-Zeichen.
Wenn Ihre Anwendung die bei der Anmeldung eingerichteten Anmeldeinformationen verwenden kann, finden Sie weitere Informationen unter Abrufen von Standardhestanmeldeinformationen.