Condividi tramite


Funzione CoSetProxyBlanket (combaseapi.h)

Imposta le informazioni di autenticazione che verranno usate per effettuare chiamate nel proxy specificato. Questa è una funzione helper per IClientSecurity::SetBlanket.

Sintassi

HRESULT CoSetProxyBlanket(
  [in]           IUnknown                 *pProxy,
  [in]           DWORD                    dwAuthnSvc,
  [in]           DWORD                    dwAuthzSvc,
  [in, optional] OLECHAR                  *pServerPrincName,
  [in]           DWORD                    dwAuthnLevel,
  [in]           DWORD                    dwImpLevel,
  [in, optional] RPC_AUTH_IDENTITY_HANDLE pAuthInfo,
  [in]           DWORD                    dwCapabilities
);

Parametri

[in] pProxy

Proxy da impostare.

[in] dwAuthnSvc

Servizio di autenticazione da usare. Per un elenco dei valori possibili, vedere Costanti del servizio di autenticazione. Usare RPC_C_AUTHN_NONE se non è necessaria alcuna autenticazione. Se viene specificato RPC_C_AUTHN_DEFAULT, DCOM selezionerà un servizio di autenticazione seguendo il normale algoritmo di negoziazione della coperta di sicurezza.

[in] dwAuthzSvc

Servizio di autorizzazione da usare. Per un elenco di valori possibili, vedere Costanti di autorizzazione. Se viene specificato RPC_C_AUTHZ_DEFAULT, DCOM selezionerà un servizio di autorizzazione seguendo il normale algoritmo di negoziazione della copertura di sicurezza. RPC_C_AUTHZ_NONE deve essere usato come servizio di autorizzazione se NTLMSSP, Kerberos o Schannel viene usato come servizio di autenticazione.

[in, optional] pServerPrincName

Nome dell'entità server da usare con il servizio di autenticazione. Se viene specificato COLE_DEFAULT_PRINCIPAL, DCOM selezionerà un nome dell'entità usando il relativo algoritmo di negoziazione coperta di sicurezza. Se Kerberos viene usato come servizio di autenticazione, questo valore non deve essere NULL. Deve essere il nome dell'entità corretto del server o la chiamata avrà esito negativo.

Se Schannel viene usato come servizio di autenticazione, questo valore deve essere uno dei moduli msstd o fullsic descritti in Nomi entità o NULL se non si vuole l'autenticazione reciproca.

In genere, la specifica di NULL non reimposta il nome dell'entità server nel proxy; invece, l'impostazione precedente verrà mantenuta. È necessario prestare attenzione quando si usa NULL come pServerPrincName quando si seleziona un servizio di autenticazione diverso per il proxy, perché non esiste alcuna garanzia che il nome dell'entità impostata in precedenza sarebbe valido per il servizio di autenticazione appena selezionato.

[in] dwAuthnLevel

Livello di autenticazione da usare. Per un elenco dei valori possibili, vedere Costanti livello di autenticazione. Se viene specificato RPC_C_AUTHN_LEVEL_DEFAULT, DCOM sceglierà un livello di autenticazione seguendo il normale algoritmo di negoziazione della copertura della sicurezza. Se questo valore non è nessuno, il servizio di autenticazione deve essere anche nessuno.

[in] dwImpLevel

Livello di rappresentazione da usare. Per un elenco di valori possibili, vedere Costanti livello rappresentazione. Se viene specificato RPC_C_IMP_LEVEL_DEFAULT, DCOM sceglierà un livello di rappresentazione seguendo il normale algoritmo di negoziazione della coperta di sicurezza. Se NTLMSSP è il servizio di autenticazione, questo valore deve essere RPC_C_IMP_LEVEL_IMPERSONATE o RPC_C_IMP_LEVEL_IDENTIFY. NTLMSSP supporta anche la rappresentazione a livello di delegato (RPC_C_IMP_LEVEL_DELEGATE) nello stesso computer. Se Schannel è il servizio di autenticazione, questo parametro deve essere RPC_C_IMP_LEVEL_IMPERSONATE.

[in, optional] pAuthInfo

Puntatore a un valore RPC_AUTH_IDENTITY_HANDLE che stabilisce l'identità del client. Il formato della struttura a cui fa riferimento l'handle dipende dal provider del servizio di autenticazione.

Per le chiamate nello stesso computer, RPC accede all'utente con le credenziali fornite e usa il token risultante per la chiamata al metodo.

Per NTLMSSP o Kerberos, la struttura è una struttura SEC_WINNT_AUTH_IDENTITY o SEC_WINNT_AUTH_IDENTITY_EX . Il client può eliminare pAuthInfo dopo aver chiamato l'API. RPC non mantiene una copia del puntatore pAuthInfo e il client non può recuperarlo più avanti nel metodo CoQueryProxyBlanket .

Se questo parametro è NULL, DCOM usa l'identità proxy corrente, ovvero il token di processo o il token di rappresentazione. Se l'handle fa riferimento a una struttura, tale identità viene usata.

Per Schannel, questo parametro deve essere un puntatore a una struttura CERT_CONTEXT che contiene il certificato X.509 del client o è NULL se il client vuole effettuare una connessione anonima al server. Se viene specificato un certificato, il chiamante non deve liberarlo finché esiste un proxy all'oggetto nell'appartamento corrente.

Per Snego, questo membro è NULL, punta a una struttura SEC_WINNT_AUTH_IDENTITY o punta a una struttura SEC_WINNT_AUTH_IDENTITY_EX . Se è NULL, Snego selezionerà un elenco di servizi di autenticazione in base a quelli disponibili nel computer client. Se punta a una struttura SEC_WINNT_AUTH_IDENTITY_EX, il membro PackageList della struttura deve puntare a una stringa contenente un elenco delimitato da virgole dei nomi del servizio di autenticazione e il membro PackageListLength deve assegnare il numero di byte nella stringa PackageList. Se PackageList è NULL, tutte le chiamate che usano Snego avranno esito negativo.

Se COLE_DEFAULT_AUTHINFO viene specificato per questo parametro, DCOM selezionerà le informazioni di autenticazione seguendo il normale algoritmo di negoziazione della coperta di sicurezza.

CoSetProxyBlanket avrà esito negativo se pAuthInfo è impostato e uno dei flag di mantello viene impostato nel parametro dwCapabilities .

[in] dwCapabilities

Funzionalità di questo proxy. Per un elenco di valori possibili, vedere l'enumerazione EOLE_AUTHENTICATION_CAPABILITIES . Gli unici flag che possono essere impostati tramite questa funzione sono EOAC_MUTUAL_AUTH, EOAC_STATIC_CLOAKING, EOAC_DYNAMIC_CLOAKING, EOAC_ANY_AUTHORITY (questo flag è deprecato), EOAC_MAKE_FULLSIC e EOAC_DEFAULT. È possibile impostare EOAC_STATIC_CLOAKING o EOAC_DYNAMIC_CLOAKING se pAuthInfo non è impostato e Schannel non è il servizio di autenticazione. Per altre informazioni, vedere Mantello . Se vengono impostati flag di funzionalità diversi da quelli indicati qui, CoSetProxyBlanket avrà esito negativo.

Valore restituito

Questa funzione può restituire i valori seguenti.

Codice restituito Descrizione
S_OK
La funzione ha avuto esito positivo.
E_INVALIDARG
Uno o più argomenti non sono validi.

Commenti

CoSetProxyBlanket imposta le informazioni di autenticazione che verranno usate per effettuare chiamate sul proxy specificato. Questa funzione incapsula la sequenza seguente di chiamate comuni (gestione degli errori esclusa).

    pProxy->QueryInterface(IID_IClientSecurity, (void**)&pcs);
    pcs->SetBlanket(pProxy, dwAuthnSvc, dwAuthzSvc, pServerPrincName, 
        dwAuthnLevel, dwImpLevel, pAuthInfo, dwCapabilities);
    pcs->Release();

Questa sequenza chiama QueryInterface nel proxy per ottenere un puntatore a IClientSecurity e con il puntatore risultante, chiama IClientSecurity::SetBlanket e quindi rilascia il puntatore.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione combaseapi.h (include Objbase.h)
Libreria Ole32.lib
DLL Ole32.dll

Vedi anche

CoQueryProxyBlanket

IClientSecurity::SetBlanket

Sicurezza in COM

Impostazione della sicurezza a livello di proxy di interfaccia