Freigeben über


CoSetProxyBlanket-Funktion (combaseapi.h)

Legt die Authentifizierungsinformationen fest, die zum Tätigen von Aufrufen des angegebenen Proxys verwendet werden. Dies ist eine Hilfsfunktion für IClientSecurity::SetBlanket.

Syntax

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
);

Parameter

[in] pProxy

Der festzulegende Proxy.

[in] dwAuthnSvc

Der zu verwendende Authentifizierungsdienst. Eine Liste der möglichen Werte finden Sie unter Authentifizierungsdienstkonstanten. Verwenden Sie RPC_C_AUTHN_NONE, wenn keine Authentifizierung erforderlich ist. Wenn RPC_C_AUTHN_DEFAULT angegeben ist, wählt DCOM einen Authentifizierungsdienst aus, der seinem normalen Aushandlungsalgorithmus für Sicherheitsdecken folgt.

[in] dwAuthzSvc

Der zu verwendende Autorisierungsdienst. Eine Liste der möglichen Werte finden Sie unter Autorisierungskonstanten. Wenn RPC_C_AUTHZ_DEFAULT angegeben ist, wählt DCOM einen Autorisierungsdienst aus, der seinem normalen Algorithmus für die Aushandlung von Sicherheitsdecken folgt. RPC_C_AUTHZ_NONE sollte als Autorisierungsdienst verwendet werden, wenn NTLMSSP, Kerberos oder Schannel als Authentifizierungsdienst verwendet wird.

[in, optional] pServerPrincName

Der Serverprinzipalname, der mit dem Authentifizierungsdienst verwendet werden soll. Wenn COLE_DEFAULT_PRINCIPAL angegeben ist, wählt DCOM einen Prinzipalnamen mithilfe des Algorithmus für die Aushandlung von Sicherheitsdecken aus. Wenn Kerberos als Authentifizierungsdienst verwendet wird, darf dieser Wert nicht NULL sein. Es muss der richtige Prinzipalname des Servers sein, andernfalls schlägt der Aufruf fehl.

Wenn Schannel als Authentifizierungsdienst verwendet wird, muss dieser Wert eines der msstd- oder fullsic-Formulare sein, die unter Prinzipalnamen oder NULL beschrieben sind, wenn Sie keine gegenseitige Authentifizierung wünschen.

Im Allgemeinen wird der Name des Serverprinzipals auf dem Proxy durch Angeben von NULL nicht zurückgesetzt. stattdessen wird die vorherige Einstellung beibehalten. Sie müssen beim Verwenden von NULL als pServerPrincName vorsichtig sein, wenn Sie einen anderen Authentifizierungsdienst für den Proxy auswählen, da es keine Garantie gibt, dass der zuvor festgelegte Prinzipalname für den neu ausgewählten Authentifizierungsdienst gültig ist.

[in] dwAuthnLevel

Die zu verwendende Authentifizierungsebene. Eine Liste der möglichen Werte finden Sie unter Konstanten der Authentifizierungsebene. Wenn RPC_C_AUTHN_LEVEL_DEFAULT angegeben ist, wählt DCOM eine Authentifizierungsstufe aus, die dem normalen Algorithmus für die Aushandlung von Sicherheitsdecken folgt. Wenn dieser Wert "none" ist, muss der Authentifizierungsdienst ebenfalls keine sein.

[in] dwImpLevel

Die zu verwendende Identitätswechselebene. Eine Liste der möglichen Werte finden Sie unter Identitätsstufenkonstanten. Wenn RPC_C_IMP_LEVEL_DEFAULT angegeben ist, wählt DCOM eine Identitätswechselebene aus, die dem normalen Algorithmus für sicherheitsdeckene Aushandlung folgt. Wenn NTLMSSP der Authentifizierungsdienst ist, muss dieser Wert RPC_C_IMP_LEVEL_IMPERSONATE oder RPC_C_IMP_LEVEL_IDENTIFY sein. NTLMSSP unterstützt auch den Identitätswechsel auf Delegatenebene (RPC_C_IMP_LEVEL_DELEGATE) auf demselben Computer. Wenn Schannel der Authentifizierungsdienst ist, muss dieser Parameter RPC_C_IMP_LEVEL_IMPERSONATE werden.

[in, optional] pAuthInfo

Ein Zeiger auf einen RPC_AUTH_IDENTITY_HANDLE Wert, der die Identität des Clients festlegt. Das Format der Struktur, auf die vom Handle verwiesen wird, hängt vom Anbieter des Authentifizierungsdiensts ab.

Bei Aufrufen auf demselben Computer protokolliert RPC den Benutzer mit den angegebenen Anmeldeinformationen und verwendet das resultierende Token für den Methodenaufruf.

Für NTLMSSP oder Kerberos ist die Struktur eine SEC_WINNT_AUTH_IDENTITY- oder SEC_WINNT_AUTH_IDENTITY_EX-Struktur . Der Client kann pAuthInfo verwerfen, nachdem die API aufgerufen wurde. RPC behält keine Kopie des pAuthInfo-Zeigers bei, und der Client kann sie später nicht in der CoQueryProxyBlanket-Methode abrufen.

Wenn dieser Parameter NULL ist, verwendet DCOM die aktuelle Proxyidentität (entweder das Prozesstoken oder das Identitätswechseltoken). Wenn das Handle auf eine Struktur verweist, wird diese Identität verwendet.

Für Schannel muss dieser Parameter entweder ein Zeiger auf eine CERT_CONTEXT-Struktur sein, die das X.509-Zertifikat des Clients enthält, oder NULL ist, wenn der Client eine anonyme Verbindung mit dem Server herstellen möchte. Wenn ein Zertifikat angegeben ist, darf der Aufrufer es nicht freigeben, solange ein Proxy für das Objekt im aktuellen Apartment vorhanden ist.

Bei Snego ist dieser Member entweder NULL, zeigt auf eine SEC_WINNT_AUTH_IDENTITY-Struktur oder auf eine SEC_WINNT_AUTH_IDENTITY_EX-Struktur . Wenn es NULL ist, wählt Snego eine Liste von Authentifizierungsdiensten aus, die auf den auf dem Clientcomputer verfügbaren Diensten basieren. Wenn es auf eine SEC_WINNT_AUTH_IDENTITY_EX Struktur verweist, muss das PackageList-Element der Struktur auf eine Zeichenfolge zeigen, die eine durch Trennzeichen getrennte Liste von Authentifizierungsdienstnamen enthält, und das PackageListLength-Element muss die Anzahl der Bytes in der PackageList-Zeichenfolge geben. Wenn PackageListNULL ist, schlagen alle Aufrufe, die Snego verwenden, fehl.

Wenn COLE_DEFAULT_AUTHINFO für diesen Parameter angegeben ist, wählt DCOM die Authentifizierungsinformationen gemäß dem normalen Algorithmus für die Allgemeine Aushandlung der Sicherheit aus.

CoSetProxyBlanket schlägt fehl, wenn pAuthInfo festgelegt ist und eines der Cloaking-Flags im dwCapabilities-Parameter festgelegt ist.

[in] dwCapabilities

Die Funktionen dieses Proxys. Eine Liste der möglichen Werte finden Sie in der EOLE_AUTHENTICATION_CAPABILITIES-Enumeration . Die einzigen Flags, die über diese Funktion festgelegt werden können, sind EOAC_MUTUAL_AUTH, EOAC_STATIC_CLOAKING, EOAC_DYNAMIC_CLOAKING, EOAC_ANY_AUTHORITY (dieses Flag ist veraltet), EOAC_MAKE_FULLSIC und EOAC_DEFAULT. Entweder EOAC_STATIC_CLOAKING oder EOAC_DYNAMIC_CLOAKING kann festgelegt werden, wenn pAuthInfo nicht festgelegt ist und Schannel nicht der Authentifizierungsdienst ist. (Weitere Informationen finden Sie unter Cloaking .) Wenn andere Als die hier genannten Funktionsflags festgelegt sind, schlägt CoSetProxyBlanket fehl.

Rückgabewert

Diese Funktion kann die folgenden Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Die Funktion war erfolgreich.
E_INVALIDARG
Mindestens ein Argument ist ungültig.

Hinweise

CoSetProxyBlanket legt die Authentifizierungsinformationen fest, die zum Tätigen von Aufrufen des angegebenen Proxys verwendet werden. Diese Funktion kapselt die folgende Sequenz allgemeiner Aufrufe (Fehlerbehandlung ausgeschlossen).

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

Diese Sequenz ruft QueryInterface auf dem Proxy auf, um einen Zeiger auf IClientSecurity zu erhalten, und ruft mit dem resultierenden Zeiger IClientSecurity::SetBlanket auf und gibt dann den Zeiger frei.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile combaseapi.h (include Objbase.h)
Bibliothek Ole32.lib
DLL Ole32.dll

Weitere Informationen

CoQueryProxyBlanket

IClientSecurity::SetBlanket

Sicherheit in COM

Festlegen der Sicherheit auf Schnittstellenproxyebene