Angeben des Serverprinzipalnamens
Der Kerberos-Authentifizierungsdienst gibt den Serverprinzipalnamen an, um die Identität des Computers sicherzustellen, mit dem eine Verbindung hergestellt wird. Geben Sie den Serverprinzipalnamen im Aufruf der Skriptmethode SWbemLocator.ConnectServer an, indem Sie den Namen des Remotecomputers angeben. Geben Sie in C++ den Serverprinzipalnamen im Parameter pServerPrincName an, wenn Sie CoSetProxyBlanket für den Proxy aufrufen. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer.
Dieser Parameter ist erforderlich, damit Kerberos die gegenseitige Authentifizierung unterstützt. Die Verwendung des Standardnamens des Serverprinzipals lässt jedoch keine gegenseitige Authentifizierung zu. Clients, für die gegenseitige Authentifizierung wichtig ist, müssen einen Serverprinzipalnamen angeben, der mit der Serveridentität übereinstimmt, die der WMI-Dienst verwendet. Weitere Informationen zum Festlegen der Proxysicherheit und ein C++-Beispiel zum Festlegen des Serverprinzipalnamens finden Sie unter Festlegen der Sicherheit für IWbemServices und andere Proxys.
Weitere Informationen zum Festlegen des Serverprinzipalnamens im Skript und Visual Basic finden Sie unter SWbemLocator.ConnectServer und Herstellen einer Verbindung mit WMI auf einem Remotecomputer.
Im Gegensatz zu den meisten Sicherheitsprotokollen für Windows Management Instrumentation (WMI) und Component Object Model (COM) können Sie den Serverprinzipal nicht in einem Aufruf von CoInitializeSecurityfestlegen. Sie können den Serverprinzipal jedoch mit dem bstrAuthority-Parameter für IWbemLocator::ConnectServeroder dem Parameter pServerPrincName für CoSetProxyBlanketfestlegen.
Das Codebeispiel in diesem Thema erfordert die folgende # include-Anweisung, um ordnungsgemäß zu kompilieren.
#include <wbemidl.h>
Das folgende Codebeispiel zeigt, wie der Serverprinzipalname mit ConnectServer festgelegt wird.
IWbemServices* g_pNameSpace = NULL;
// Namespace to which to connect
BSTR bstrNameSpace =
SysAllocString( L"\\\\MyMachine\\root\default" );
// The bstrAuthority string contains the server
// principal name MyDomain\\MyMachine
// and the authentication service, which is Kerberos.
BSTR bstrAuthority =
SysAllocString( L"kerberos:MyDomain\\MyMachine" );
HRESULT hr = NULL;
IWbemLocator* pWbemLocator = 0;
hr = pWbemLocator->ConnectServer(
bstrNameSpace, // NameSpace name
NULL, // User name
NULL, // Password
NULL, // Locale
0L, // Security flags
bstrAuthority, // Authority, server principal name
NULL, // WBEM context
&g_pNameSpace // Namespace
);
// Free memory resources.
g_pNameSpace->Release();
SysFreeString(bstrNameSpace);
SysFreeString(bstrAuthority);