Share via


Authentifizierung mit dem IPC-Channel

Dieses Thema bezieht sich auf eine veraltete Technologie, die zum Zwecke der Abwärtskompatibilität mit vorhandenen Anwendungen beibehalten wird und nicht für die neue Entwicklung empfohlen wird. Verteilte Anwendungen sollten jetzt mit  Windows Communication Foundation (WCF) entwickelt werden.

Der IPC-Channel bietet eine direkte Unterstützung für Authentifizierung und Identitätswechsel. In diesem Thema wird beschrieben, wie der Client- und der Serverchannel konfiguriert werden.

Mit .NET Framework können Server von Remoteobjekten Aufrufer authentifizieren und imitieren, indem sie die Eigenschaften des zugeordneten IpcServerChannel-Objekts und des IpcClientChannel-Objekts festlegen. Im Gegensatz zum HTTP- und zum TCP-Channel führt der IPC-Channel standardmäßig eine Authentifizierung durch. Beim Erstellen von IpcServerChannel wird eine Zugriffssteuerungsliste (Access Control List, ACL) für den Channel erstellt. Standardmäßig enthält die ACL nur die Anmeldeinformationen, unter denen die Serveranwendung ausgeführt wird. Um mit dem Channel kommunizieren zu können, muss der Client (und damit IpcClientChannel) unter den gleichen Anmeldeinformationen ausgeführt werden. Sie können jedoch einen Windows-Benutzer oder eine Windows-Benutzergruppe in der IPC-Serverchannelkonfiguration angeben, durch die der Benutzer oder die Benutzergruppe auf den Channel zugreifen kann.

Serverkonfiguration

Wenn ein anderer Benutzer als der Benutzer, unter dessen Identität die Serveranwendung ausgeführt wird, Zugriff auf den IPC-Channel haben soll, können Sie einen Benutzer oder eine Benutzergruppe in der authorizedGroup-Eigenschaft angeben. Mit der folgenden Konfigurationsdatei können alle Benutzer in der Users-Gruppe auf den IPC-Channel zugreifen.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.runtime.remoting>
        <application>
            <service>
                <wellknown mode="SingleCall" type="Server.MyRemoteObject, Server" objectUri="MyRemoteObject.rem" />
            </service>
            <channels>
        <channel ref="ipc" portName="MyIpcChannel" authorizedGroup="Users"/>
            </channels>
        </application>
    </system.runtime.remoting>
</configuration>

Der IPC-Channel unterstützt auch einen Identitätswechsel. Dies wird von der impersonate-Eigenschaft auf dem Server gesteuert. Die folgende Konfiguration aktiviert den Identitätswechsel.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.runtime.remoting>
        <application>
            <service>
                <wellknown mode="SingleCall" type="Microsoft.Samples.Implementation.ImplementationClass, Server" objectUri="server.rem" />
            </service>
            <channels>
        <channel ref="ipc" portName="MyIpcChannel" secure="true" impersonate="true" authorizedGroup="Users"/>
            </channels>
        </application>
    </system.runtime.remoting>
</configuration>
ms172351.note(de-de,VS.100).gifHinweis:
Wenn Sie die IPC-Channelauthentifizierung verwenden, müssen Sie die secure-Eigenschaft trotzdem auf true festlegen, wenn Sie die impersonate-Eigenschaft auf true einstellen.

ms172351.note(de-de,VS.100).gifHinweis:
Alle Prozesse werden unter einem Standardbenutzerkonto auf Windows Vista ausgeführt. Standardbenutzer können kein Administratorkonto imitieren. Wenn Sie über eine Remoteanwendung verfügen, die die Identität eines Administratorkontos annehmen muss, dann muss diese Anwendung mit erweiterten Berechtigungen ausgeführt werden.

Es besteht die Möglichkeit, auf die Identität des authentifizierten Clients zuzugreifen, indem CurrentPrincipal abgerufen und dann auf die zugehörige Identity-Eigenschaft zugegriffen wird. Auf die Identität des imitierten Clients kann durch GetCurrent zugegriffen werden. Sie können dann nach Bedarf eine eigene Autorisierung ausführen.

Der IPC-Channel verwendet immer die NTLM-Authentifizierung. Kerberos wird nicht unterstützt, weil IPC auf Aufrufe innerhalb eines einzelnen Computers beschränkt ist.

Clientkonfiguration

Um einen IPC-Channel für einen Identitätswechsel zu konfigurieren, legen Sie, wie in der folgenden Konfigurationsdatei gezeigt, die tokenImpersonationLevel-Eigenschaft auf impersonation fest.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.runtime.remoting>
        <application>
            <channels>
              <channel ref="ipc" secure="true" tokenImpersonationLevel="impersonation" />
             </channels>
        </application>
    </system.runtime.remoting>
</configuration>
ms172351.note(de-de,VS.100).gifHinweis:
Wenn Sie die IPC-Channelauthentifizierung verwenden, müssen Sie die secure-Eigenschaft trotzdem auf true festlegen, wenn Sie die tokenImpersonationLevel-Eigenschaft auf "impersonation" einstellen. Damit ein Identitätswechsel vorgenommen wird, muss die impersonate-Eigenschaft auf dem Serverchannel auf true festgelegt werden. Beachten Sie, dass die Eigenschaft auf dem Server impersonate heißt, auf dem Client jedoch tokenImpersonationLevel auf impersonation gesetzt wird.

ms172351.note(de-de,VS.100).gifHinweis:
Alle Prozesse werden unter einem Standardbenutzerkonto auf Windows Vista ausgeführt. Standardbenutzer können kein Administratorkonto imitieren. Wenn Sie über eine Remoteanwendung verfügen, die die Identität eines Administratorkontos annehmen muss, dann muss diese Anwendung mit erweiterten Berechtigungen ausgeführt werden.

tokenImpersonationLevel kann auf einen der in der folgenden Tabelle aufgelisteten Werte festgelegt werden.

tokenImpersonationLevel-Einstellung Beschreibung

identification

Der Server kann zwar Informationen zum Client abrufen (z. B. die Sicherheits-IDs und Sicherheitsberechtigungen), er kann den Client jedoch nicht imitieren.

impersonation

Der Server kann den Sicherheitskontext des Clients auf seinem lokalen System imitieren. Der Server kann den Client auf Remotesystemen nicht imitieren.

delegation

Der Server kann den Client auf Remotesystemen imitieren.

ms172351.note(de-de,VS.100).gifHinweis:
Der IPC-Channel erlaubt es Ihnen nicht, eine alternative Gruppe von Anmeldeinformationen programmgesteuert oder durch Konfiguration anzugeben. Deshalb sendet der Client die Anmeldeinformationen, unter denen er ausgeführt wird, immer an den Server.

ms172351.note(de-de,VS.100).gifHinweis:
Der IPC-Channel verwendet zur Authentifizierung nur NTLM.

Siehe auch

Konzepte

Authentifizierung mit dem HTTP-Channel
Authentifizierung mit dem TCP-Channel
Verschlüsselung und Nachrichtenintegrität