Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per ottenere credenziali diverse da quelle associate alla sessione di accesso corrente , popolare una struttura SEC_WINNT_AUTH_IDENTITY con informazioni relative all'entità di sicurezza alternativa . Passare la struttura alla funzione AcquireCredentialsHandle usando il parametro pAuthData.
Nella tabella seguente sono descritti i membri della struttura SEC_WINNT_AUTH_IDENTITY.
| Membro | Descrizione |
|---|---|
| utente | Stringa con terminazione Null contenente il nome dell'entità di sicurezza le cui credenziali verranno usate per stabilire un contesto di sicurezza. |
| LunghezzaUtente | La lunghezza, in caratteri, del membro utente . Omettere il valore Null di terminazione. |
| Dominio | Stringa terminata da Null che identifica il dominio contenente l'account dell'entità di sicurezza. |
| LunghezzaDominio | La lunghezza del membro del dominio , in caratteri. Omettere il null finale. |
| password | Stringa con terminazione Null contenente la password dell'entità di sicurezza. |
| LunghezzaPassword | Lunghezza del membro password, in caratteri. Omettere il terminante null. |
| bandiere | Indica se i membri della stringa sono in formato ANSI o Unicode. |
Nella tabella seguente sono elencati i valori validi per il Flags membro della struttura.
| Costante | Descrizione |
|---|---|
| SEC_WINNT_AUTH_IDENTITY_ANSI | Le stringhe in questa struttura sono in formato ANSI. |
| SEC_WINNT_AUTH_IDENTITY_UNICODE | Le stringhe in questa struttura sono in formato Unicode. |
La struttura e le costanti vengono dichiarate nel file di intestazione Rpcdce.h distribuito con Platform Software Development Kit (SDK).
Nell'esempio seguente viene illustrata una chiamata lato client per ottenere le credenziali digest per un account utente specifico.
#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.
);
}
La funzione _tcslen restituisce la lunghezza della stringa in caratteri, senza includere il carattere Null di terminazione.
Se l'applicazione può usare le credenziali stabilite all'accesso, vedere Ottenimento delle credenziali Digest predefinite.