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 |
---|---|
|
Die Funktion war erfolgreich. |
|
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 |