Sicherheitsdeckenverhandlung

Eine Sicherheitsdecke ist eine Gruppe von Werten, die die Sicherheitseinstellungen beschreiben, die für alle Proxys in einem Prozess oder nur für einen bestimmten Schnittstellenproxy gelten. Eine Sicherheitsdecke umfasst die folgenden Werte:

  • Authentifizierungsdienst
  • Autorisierungsdienst
  • Prinzipalname
  • Authentifizierungsebene
  • Ebene des Identitätswechsels
  • Authentifizierungsidentität
  • Funktionen
  • Eine Zugriffssteuerungsliste (Access Control List, ACL) (nur Server)

Die Sicherheitsdeckenverhandlung ist der Prozess, den COM verwendet, um die Sicherheitseinstellungen für einen Proxy auszuwählen, wenn er erstellt wird. Bei diesem Prozess wird die Sicherheitsdecke des Servers mit der Sicherheitsdecke des Clients verglichen und diese Werte verwendet, um eine geeignete Standardsicherheitsdecke für den Proxy zu erstellen. In den folgenden Absätzen wird erläutert, wo die Sicherheitsdecken des Clients und des Servers stammen, und es wird beschrieben, wie COM die Sicherheitsdecke für den Proxy unter Verwendung der Sicherheitsdecken des Clients und servers aushandelt.

Der Client und der Server können jeweils CoInitializeSecurity aufrufen, um ihre jeweiligen Sicherheitsdecken anzugeben. Wenn eine Anwendung CoInitializeSecurity nicht explizit aufruft, ruft COM sie implizit für die Anwendung unter Verwendung entsprechender Standardwerte auf. Weitere Informationen zu diesen Standardwerten finden Sie unter COM-Sicherheitsstandard.

Einige Parameter für CoInitializeSecurity gelten, wenn die Anwendung ein Server ist, und einige gelten, wenn die Anwendung ein Client ist. Wenn die Anwendung als Server fungiert, sind diese Parameter relevant: eine ACL, eine Liste der Authentifizierungsdienst-/Autorisierungsdienst-/Prinzipalnamentupel und eine Authentifizierungsebene. Der Aufruf von CoInitializeSecurity eines Servers , ob implizit oder explizit, bestimmt die Sicherheitsdecke des Servers, die behoben bleibt.

Wenn die Anwendung als Client fungiert, sind die folgenden Werte, die an CoInitializeSecurity übergeben werden, relevant: Authentifizierungsebene, Identitätswechselebene, Authentifizierungsidentität und Funktionen. Der implizite oder explizite Aufruf von CoInitializeSecurity eines Clients gibt die vom Client benötigte Sicherheitsdecke an.

Wenn ein Proxy erstellt wird, verwendet COM die Werte, die durch die Sicherheitsdecke des Servers und die Sicherheitsdecke des Clients angegeben sind, um eine Standardsicherheitsdecke auszuhandeln, die für den Proxy geeignet ist. COM wählt einen Authentifizierungsdienst aus, der sowohl auf dem Client als auch auf dem Server funktioniert. Der Autorisierungsdienst und der Prinzipalname werden für die Verwendung mit dem Authentifizierungsdienst ausgewählt. Für die Authentifizierungsebene wählt COM die höhere der vom Client und server angegebenen Authentifizierungsstufen aus. Die Identitätswechselebene und die von COM ausgewählten Funktionen sind die vom Client angegebenen. Die Authentifizierungsidentität wird vom Client für den ausgewählten Authentifizierungsdienst angegeben.

Nachdem die Standardsicherheitsdecke berechnet wurde, werden ihre Werte dem neu erstellten Proxy zugewiesen. Der Client kann die Sicherheitseinstellungen für den Proxy überschreiben, indem er IClientSecurity::SetBlanket aufruft. Die für SetBlanket angegebenen Werte werden nicht ausgehandelt. sie werden einfach dem angegebenen Proxy zugewiesen. Wenn jedoch Standardparameter (z. B. RPC_C_IMP_LEVEL_DEFAULT) an SetBlanket übergeben werden, verwendet COM den zuvor beschriebenen Algorithmus für die Aushandlung von Sicherheitsdecken, um die Standardparameter zu berechnen.

Sicherheit in COM