Business LayerHier werden die Komponenten entworfen, die eigentlichen Geschäftsregeln enthalten. Beispiel :
Presentation LayerWeb BrowserHierbei wird eine ASP-Seite verwendet, die mit Hilfe des IIS-auf eine Komponente des Business-Layer zugreift. Client-AnwendungDies kann jede beliebiges Programm sein, welches in der Lage ist, COM-Server aufzurufen wie WORD, EXCEL, ACCESS, VISUAL BASIC. ZugriffsrechtverwaltungFür die Entwicklung von gesicherten Anwendungen ist das Security-Modell von NT ist sehr beschränkt und schwer zu verwalten. Mit NT-Security impersonifiziert die MTS-Komponenteninstanz den Client und arbeitet im Security-Kontext des Clients bei allen Zugriffen. Dies bietet eine ausreichende Sicherheit für alle Objekte, die der Client direkt anspricht. Allerdings führt dies auch zu einigen Performance- und Zugriffsrechtproblemen. Zunächst benötigt der Client Rechte auf alles, was er zugreift. Wenn jeder Client auf verschiedene andere Komponenten zugreift, eine Systemresourcen und eine Datenbank und es existieren Tausende von Clients wird die Verwaltung zu einem Alptraum. Weiterhin ist die gemeinsame Nutzung und Pooling von Resourcen begrenzt. Wenn die NT-integrierte Zugriffsrechtsverwaltung in Zusammenhang mit einer SQL SERVER-Datenbank benutzt wird und der Client in der Komponente impersonifiziert wird, ist 'Connection Pooling' unmöglich'. Jeder Client braucht jedes mal eine neue Verbindung. Dies führt zu einer Verschlechterung der Leistung. Die Zugriffsrechtsverwaltung in MTS wird über Rollen durchgeführt. Wie bereits zuvor erwähnt, sind die Rollen als symbolische Namen für eine Auflistung von Gruppen/Benutzern mit bestimmten Zugriffsrechten zu sehen. Rollen werden auf Paketebene definiert und Komponenten innerhalb eines Pakets können zu einer oder mehreren Rollen zugewiesen werden. Das nachfolgende Bild zeigt ein Paket 'devcon1', welches 3 Rollen enthält. Nur die letzten beiden Komponenten enthalten eine Rollenmitgliedschaft. Wenn man den Roles-Ordner weiter öffnet, sieht man eine Liste von NT Benutzern/Gruppen, die zu einer bestimmten Rolle zugeordnet sind. Um ein neue Rolle zu erstellen, geht man folgendermaßen vor :
Um neue Benutzer/Gruppen zu der Rolle hinzufügen, geht man folgendermaßen vor :
Die Zugriffsrechte innerhalb MTS können auf verschiedene Arten verwaltet werden. Das Sicherheitskonzept von MTS besteht aus deklarativer unf programmatischer Sicherheit. Entwickler können in Ihren Komponenten beide Arten verwenden, bevor sie sie in einer mit Windows NT gesicherten Domäne verteilen. Man kann die Zugriffsrechte der Pakete innerhalb des MTS Explorers verwalten. Diese Form der deklarativen Sicherheit, die keinerlei Komponentenprogrammierung benötigt, basiert auf dem Standard NT Sicherheitskonzept. Dies kann über die Verwaltung der Zugriffsrechte auf Paket- oder Komponentenebene geschehen. Setzen der System-Paket IdentitätVor allen anderen Maßnahmen in MTS, sollte man das System Paket konfigurieren, um die Verwaltung der Zugriffsrechte zu ermöglichen. Setzen Sie die System Paket Identity, bevor Sie ein neues Paket erzeugen.
Hinzufügen von Zugriffsrechten zu einem MTS Paket
Bemerkung : Falls weiterhin eine “Access is denied”-Fehlermeldung erscheint, wenn Sie die Komponente aufrufen, gibt es weitere mögliche Lösungen :
Deklarative SicherheitSicherheit auf Ebene von PaketenJedes Paket hat seine eigene Zugriffsrechtsverwaltung, welche in dem Paketeigenschhaften-Dialog gesetzt werden kann. Standardmäßig ist das Kontrollkästchen für die Zugriffsrechtsverwaltung nicht markiert, so daß dies gesetzt werden muß, um die Zugriffsrechtsverwaltung einzuschalten. Falls die Zugriffsrechtsverwaltung für das Paket nicht aktiviert wird, die Rollen für die Komponenten werden von MTS nicht überprüft. Sobald die Zugriffsrechtsverwaltung auf Paketebene aktiviert ist, muß auch Zugriffsrechtsverwaltung auf Komponentenebene aktiviert sein, damit die Rollen überprüft werden. Sicherheit auf der Ebene von KomponentenJede installierte Komponente kann ebenfalls ihre eigenen Einstellungen zur Zugriffsrechtsverwaltung haben. Genau wie bei einem Paket wird die Zugriffsrechtsverwaltung durch Setzen des Enable authorization checking Kontrollkästchens im Eigenschaftsdialog der Komponente gesetzt. Wenn die Zugriffsrechtsverwaltung auf beiden Ebenen aktiviert und ebenfalls Rollen definiert, muß eine Rollen in die Role Membership-Ordner der Komponenten eingefügt werden. Falls dies nicht geschieht, erhält man einen Access Denied-Fehler, falls man versucht, eine Methode/Eigenschaft der Komponente aufzurufen. Falls überhaupt keine Rollen vorhanden sind, tritt derselbe Fehler auf. Man kann zwar eine Instanz mit CREATEOBJECT() erzeugen, aber spätestens beim Aufruf einer Methode erhält den gleichen Fehler.
Wenn man den Zugriff zu einer bestimmten Komponente innerhalb eines Paketes begrenzen will, ist ein Verständnis der Aufrufe der Komponenten untereinander wichtig. Wenn eine Komponente von einem Base Client aufgerufen wird, überprüft MTS die Rollen für die Komponente. Wenn eine Komponente von einer anderen Komponente aufgerufen wird, wird keine Überprüfung vorgenommen. Die Komponenten glauben (trust) sich untereinander. Nach einer Änderung der Einstellungen der Zugriffsrechte für eine bestimmte Komponente/Paket muß der Server heruntergefahren werden, bevor die Änderungen wirklich stattfinden. Diese Option ist in dem Menü ACTION verfügbar, sobald das Paket ausgewählt ist. Programmatische SicherheitMan kann programmatisch bestimmte Zugriffsrechte abfragen. Die folgenden 3 Methoden/Eigenschaften geben Informationen zurück, die Zugriffsrechte für dieses Paket/Komponente betreffen.
Die nachfolgende Methode überprüft, ob der Aufrufer in einer bestimmten Rolle ist. Die IsCallerInRole()-Methode ist nützlich, sobald Rollen definiert sind, aber wenn der Code generisch sein soll und man nicht weiß, ob bestimmte Rollen einer Komponente zugeordnet sind, sollte man dies über eine Fehlerroutine machen.
Erfahrene Benutzer können auf die Security-Eigenschaft des Kontextobjektes zugreifen, um mehr Informationen über den Benutzer zu erhalten. Die Security-Eigenschaft bietet die folgenden zusätzlichen Informationen :
Welche Art von Zugriffsrechtsverwaltung sollte man nun nutzen ? Programmatische Sicherheit bietet mehr Möglichkeiten, wenn man bestimmte Funktionalitäten für bestimmte Rollen definieren will. Man kann CASE-Strukturen aufbauen, die unterschiedliche Aufgaben in Abhängigkeit der Rolle des aufrufenden Komponente durchführen. Deklarative Sicherheit kann nur Zugriffsrechte auf Komponentenebene vergeben, nicht auf Methoden- oder Eigenschaftsebene. Änderungen der programmatischen Sicherheit erfordern eine Neukompilierung der Komponente, was manchmal nicht durchführbar ist. Die Möglichkeit über den MTS Explorer die Zugriffsrechte von Benutzern zu ändern, gibt dem Administrator größere Flexibilität. Die optimale Lösung ist eine Mischung aus der Benutzung deklarativer und programmatischer Sicherheit. Tips für VFP BenutzerVieles in der Zugriffsrechtsverwaltung kann über die MTS Admin-Objekte per OLE-Automation durchgeführt werden. Dies kann erledigt werden im AfterBuild-Ereignis einer ProjektHook-Klasse, die mit dem Projekt verbunden ist, daß die MTS COM DLL erzeugt. VerteilungMTS bietet auch Werkzeuge zur Verteilung von sowohl client- als auch serverseitigen Setups. Setups werden auf Ebene ein Pakets durchgeführt. Aus diesem Grunde ist es sinnvoll, alle Komponenten für eine Anwendung ist einem Paket unterzubringen. Dieses Deployment-Paket enthält alle Einstellungen zur Konfiguration von DCOM, so daß keine Einstellungen in dem DCOM Konfigurationsdialog nötig sind. Ein Setup kann wie folgt erzeugt werden :
Wichtig:Es reicht nicht, nur einen Pfad einzugeben, sondern man muß den kompletten Pfad einschließlich des Namens der PAK angeben, wie oben dargestellt. Man kann hierfür auch die Administration Objekte verwenden, um ein Script zu erzeugen, daß den Vorgang automatisiert. Die Ausgabe des Exports besteht aus zwei Setups: Server SetupDieses Setup, welches in dem Ordner abgespeichert wird, welcher im Export Dialog angegeben wurde, enthält die PAK Datei und alle COM DLL Server, die von diesem Paket benutzt werden.
Mit Visual FoxPro ist außerdem eine TLB-Datei (Type Library) enthalten. Man kann dieses Paket auf einem anderen Rechner installieren, indem man wie unten dargestellt die Option 'Install pre-built packages' von Paket-Assistenten verwendet. |