Freigeben über


Authentifizierung mit dem TCP-Channel

Remoteprozeduren sind oft nützlich, um einen Aufrufer zu identifizieren und mit den Berechtigungen auszuführen, die mit seiner Identität verknüpft sind. Diese Methode wird empfohlen, denn sie hilft, bösartige Aufrufer daran zu hindern, eine Remoteprozedur zum Ausführen von Aktionen zu missbrauchen, die andernfalls nicht autorisiert wären.

Durch Festlegen von Konfigurationseigenschaften der zugeordneten Objekte TcpServerChannel und TcpClientChannel ermöglicht von .NET Framework Servern von Remoteobjekten, Aufrufer zu identifizieren und deren Identität anzunehmen.

Serverkonfiguration

Um einen TCP-Serverchannel zur Authentifizierung von Remoteaufrufern zu konfigurieren, verwenden Sie die authenticationMode-Konfigurationseigenschaft des TcpServerChannel-Objekts, das auf einen beliebigen Member der AuthenticationMode-Enumeration festgelegt werden kann. Wenn authenticationMode auf IdentifyCallers festgelegt ist, fordert der Channel alle Aufrufer zur Angabe einer überprüfbaren Benutzeridentität auf. Wenn authenticationMode auf ImpersonateCallers festgelegt ist, werden sämtliche Vorgänge auf dem Server mit der angegebenen Identität ausgeführt. Ein Beispiel dafür, wie die authenticationMode-Konfigurationseigenschaft programmgesteuert festgelegt wird, finden Sie unter Gewusst wie: Festlegen der authenticationMode-Konfigurationseigenschaft.

Die Identität eines authentifizierten Clients ist in der CallContext-Klasse als __remotePrincipal-Daten verfügbar.

Clientkonfiguration

Um einen TCP-Clientchannel zur Authentifizierung von Aufrufern an Remoteserver zu konfigurieren, verwenden Sie die impersonationLevel-Konfigurationseigenschaft des TcpClientChannel-Objekts, das auf einen beliebigen Member der ClientImpersonationLevel-Enumeration festgelegt werden kann. Wenn impersonationLevel auf None festgelegt ist, werden alle Aufrufe für Remoteserver anonym vorgenommen. Wenn impersonationLevel auf Identify festgesetzt ist, identifiziert der Client den Aufrufer für den Remoteserver. Wenn impersonationLevel auf Impersonate festgelegt ist, kann der Remoteaufruf unter der angegebenen Identität ausführt werden. Wenn impersonationLevel auf Delegate festgelegt ist, kann der Server die Identität des Clients übergeben. Wenn impersonationLevel für den Remoteserver höher sein muss, als der Client zulässt (z. B. wenn authenticationMode auf IdentifyCallers und impersonationLevel auf None festgelegt ist oder authenticationMode auf ImpersonateCallers und impersonationLevel auf Identify festgelegt ist), wird eine Ausnahme ausgelöst.

Standardmäßig authentifiziert sich ein TCP-Clientchannel selbst mit der Benutzeridentität, unter der der Clientprozess ausgeführt wird. Sie können eine alternative Identität angeben, indem Sie die useDefaultCredentials-Konfigurationseigenschaft auf false festlegen und die Konfigurationseigenschaften domain, username und password so festlegen, dass eine alternative Identität angegeben wird.

Ein TCP-Clientchannel kann konfiguriert werden, um zu entscheiden, ob eine Authentifizierung basierend auf einer komplexen, programmgesteuerten Logik erfolgen soll. Wenn Sie die authenticationPolicy-Konfigurationseigenschaft auf ein Objekt festlegen, das die IAuthenticationPolicy-Schnittstelle implementiert, wird die ValidateSecurityPackage-Methode des Objekts aufgerufen, um zu bestimmen, ob die Authentifizierung fortgesetzt werden soll.

Ein Beispiel dafür, wie ein TCP-Clientchannel zur Ausführung einer Authentifizierung in einer Konfigurationsdatei festgelegt wird, finden Sie unter Gewusst wie: Festlegen eines TCP-Clientchannels zur Ausführung einer Authentifizierung.

Siehe auch

Aufgaben

Gewusst wie: Festlegen der authenticationMode-Konfigurationseigenschaft
Gewusst wie: Festlegen eines TCP-Clientchannels zur Ausführung einer Authentifizierung

Referenz

AuthenticationMode
ClientImpersonationLevel

Konzepte

Verschlüsselung