Sdílet prostřednictvím


Technologiebeispiel für rollenbasierte Sicherheit

Aktualisiert: November 2007

Dieses Beispiel veranschaulicht die Verwendung rollenbasierter Sicherheit. Die Serveranwendung übermittelt, welches Benutzerkonto die Clientanwendung verwendet und ob dieses Konto zur Administratorrolle gehört.

Informationen zum Verwenden der Beispiele finden Sie in folgenden Themen:

So erstellen Sie das Beispiel mithilfe der Eingabeaufforderung

  1. Öffnen Sie das Eingabeaufforderungsfenster, und navigieren Sie zu einem der sprachspezifischen Unterverzeichnisse im Verzeichnis RoleBasedSecurity.

  2. Geben Sie je nach verwendeter Programmiersprache msbuild RoleBasedSecurityCS.sln oder msbuild RoleBasedSecurityVB.sln aus einem der sprachspezifischen Unterverzeichnisse ein.

So erstellen Sie das Beispiel mithilfe von Visual Studio

  1. Öffnen Sie Windows Explorer, und navigieren Sie zu einem der sprachspezifischen Unterverzeichnisse im Verzeichnis RoleBasedSecurity.

  2. Doppelklicken Sie je nach verwendeter Programmiersprache auf die Datei RoleBasedSecurityCS.sln oder RoleBasedSecurityVB.slnn, um die Datei in Visual Studio zu öffnen.

  3. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

So führen Sie das Beispiel aus

  1. Navigieren Sie über die Eingabeaufforderung oder in Windows Explorer zu dem Verzeichnis, das die neue ausführbare Datei enthält.

  2. Geben Sie RBSecDemo.exe in der Befehlszeile ein, oder doppelklicken Sie auf das Symbol für RBSecDemo.exe, um die Datei aus Windows Explorer zu starten.

  3. Klicken Sie auf die Schaltfläche mit der Bezeichnung Angemeldeten Benutzer anzeigen. Im Anwendungsfenster sollte der Kontoname des momentan angemeldeten Benutzers angezeigt werden. Klicken Sie dann auf die Schaltfläche mit der Bezeichnung Aufrufer in Demorolle?. Nun sollte die Meldung "Sie SIND in RBSecurityDemoRole" angezeigt werden.

  4. Starten Sie das Verwaltungstool Komponentendienste (auch als "COM+-Explorer" bezeichnet), indem Sie nacheinander auf Start, Verwaltung und Komponentendienste klicken. Suchen Sie die RBSecDemoSvr COM+-Anwendung, indem Sie den Knoten Komponentendienste\Computer\Arbeitsplatz\COM+-Anwendungen im linken Bereich des COM+-Explorer erweitern. Klicken Sie dann mit der rechten Maustaste auf die RBSecDemoSvr-Anwendung, und wählen Sie "Eigenschaften" aus. Dadurch wird das Dialogfeld Eigenschaften für die Anwendung aufgerufen. Klicken Sie auf die Registerkarte "Sicherheit". Die hier angegebenen Informationen entsprechen den durch das ApplicationAccessControlAttribute angegebenen Einstellungen. Deaktivieren Sie das Kontrollkästchen "Zugriffsüberprüfungen für diese Anwendung erzwingen".

    Wichtiger Hinweis:

      Diese Aktion deaktiviert die COM+-Sicherheit für alle in der Anwendung enthaltenen Komponenten.

    Klicken Sie auf OK, um das Eigenschaftendialogfeld zu schließen.

  5. Kehren Sie zu der RBSecDemo-Clientanwendung zurück. Klicken Sie auf Angemeldeten Benutzer anzeigen. Die Meldung "Unbekannter Aufrufer (Sicherheit ist nicht aktiviert)" sollte angezeigt werden. Klicken Sie auf Aufrufer in Demorolle?. Der Client meldet nach wie vor, dass sich der Benutzer in der RBSecurityDemoRole befindet. Der Grund hierfür liegt darin, dass bei deaktivierter Sicherheit true bei allen Aufrufen von IsCallerInRole zurückgegeben wird.

  6. Kehren Sie zum COM+-Explorer zurück, und rufen Sie erneut die RBSecDemoSvr-Eigenschaftenseite auf, indem mit der rechten Maustaste auf die Anwendung klicken und Eigenschaften auswählen. Klicken Sie auf die Registerkarte Sicherheit, und aktivieren Sie das Kontrollkästchen Zugriffsüberprüfungen für diese Anwendung erzwingen wieder. Nun ist für die Anwendung die Sicherheit wieder aktiviert. Klicken Sie auf OK, um das Eigenschaftendialogfeld zu schließen.

  7. Suchen Sie die Komponente Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject durch Erweitern des Knotens "RBSecDemoSvr\Komponenten". Klicken Sie mit der rechten Maustaste auf die Komponente "Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject", und wählen Sie im Popupmenü Eigenschaften aus.

  8. Klicken Sie auf die Registerkarte Sicherheit. Die Autorisierungseinstellung hier entspricht dem im Beispielcode angegebenen ComponentAccessControlAttribute. Es sollte eine Rolle mit der Bezeichnung "RBSecurityDemoRole" aufgeführt werden, die explizit mit der Komponente verknüpft ist. Diese Rolle wurde erstellt und mithilfe des SecurityRoleAttribute im Beispielcode an die Beispielkomponente gebunden. Klicken Sie auf OK, um das Eigenschaftendialogfeld zu schließen.

  9. Erweitern Sie im COM+-Explorer unter der RBSecDemoSvr-Anwendung den Ordner Rollen. Hier sollte RBSecurityDemoRole angezeigt werden. Erweitern Sie RBSecurityDemoRole\Users. Im Ordner Benutzer sollte ein einzelnes Konto ("Jeder") angezeigt werden. Klicken Sie mit der rechten Maustaste auf "Jeder", und wählen Sie im Popupmenü Löschen aus. Bestätigen Sie im daraufhin angezeigten Dialogfeld den Löschvorgang. COM+ speichert Sicherheitseinstellungen für Rollen zwischen, d. h., Sie müssen die RBSecDemoSvr-Anwendung herunterfahren, bevor Sie sich die Auswirkungen dieser Änderung ansehen können. Klicken Sie im COM+-Explorer mit der rechten Maustaste auf die Anwendung, und wählen Sie im Popupmenü Herunterfahren aus.

  10. Kehren Sie zu der RBSecDemo-Clientanwendung zurück. Durch Klicken auf eine der Schaltflächen sollte ein MessageBox mit der Meldung "Zugriff verweigert" angezeigt werden. Bei der Objekterstellung wurde die Sicherheitsausnahme, dass der Zugriff verweigert wurde, ausgegeben, weil die Komponente RBSecurityDemoRole nicht den aktuellen Aufrufer enthält.

So deinstallieren Sie das Beispiel

  1. Navigieren Sie zum Verzeichnis, in dem Sie das MSBuild-Tool ausgeführt oder die SLN-Datei in Visual Studio gestartet haben.

  2. Führen Sie je nach verwendeter Programmiersprache msbuild RoleBasedSecurityVB.sln /t:Clean oder msbuild RoleBasedSecurityVB.sln /t:Clean aus. Diese Aktion ruft das .NET Services Installation-Tool (Regsvcs.exe) und das Global Assembly Cache-Tool (Gacutil.exe) mit dem /u-Schalter zum Entfernen der Beispieldateien aus dem COM+-Katalog und dem globalen Assemblycache auf.

Anforderungen

Plattform: Windows 2000, Windows XP, Windows Server 2003

.NET Framework-Version: 2.0

Hinweise

Weitere Informationen zum Erstellen von binären Beispieldateien und zu Registrierungsschritten finden in den Kommentaren im Quellcode.

Zu den von der Beispielanwendung abgerufenen Informationen zählen die folgenden:

  • Wurde die COM+-Sicherheit aktiviert?

  • Ist der aktuelle Aufrufer ein Member einer im Beispiel erstellten Sicherheitsrolle?

  • Kontoname des aktuellen Aufrufers.

In dem Verwaltungstool Komponentendienste wird die Komponente als Microsoft.Samples.Technologies.ComponentServices.RoleBasedSecurity.RBSecurityObject angezeigt.

Hinweis:

Führen Sie das Global Assembly Cache-Tool (Gacutil.exe) aus, um die Assembly RBSecDemoSvr.dll vor Ausführen des Beispiels im globalen Assemblycache zu installieren. Gacutil.exe befindet sich im Verzeichnis SDK\<Version>\Bin. Bei der Visual Basic-Version navigieren Sie beispielsweise zum Verzeichnis C:\Dokumente und Einstellungen\Ihr Benutzername\Eigene Dateien\Samples\Technologies\ComponentServices\RoleBasedSecurity\VB\bin und geben gacutil -i RBSecDemoSvr.dll ein.

Das Beispiel veranschaulicht zudem das Aktivieren der Sicherheit auf Anwendungs- oder Komponentenebene sowie das Erstellen von Sicherheitsrollen mithilfe von Attributen.

Hinweis:

   Die Interoperabilität der COM+-Sicherheit in .NET wird für Anwendungsentwickler bereitgestellt, die eine verwaltete Erweiterung für eine vorhandene Anwendung erstellen müssen, die die Sicherheitsdienste von COM+ 1.0 verwendet. .NET Framework stellt eine eigene rollenbasierte Sicherheit zur Verfügung. Die beiden Methoden sind unabhängig voneinander. In einer einzelnen Anwendung sollte immer nur eine der beiden Methoden verwendet werden.

Siehe auch

Referenz

ApplicationAccessControlAttribute

ComponentAccessControlAttribute

ContextUtil

SecurityCallContext

SecurityRoleAttribute

ServicedComponent

System.ComponentModel

System.EnterpriseServices

Weitere Ressourcen

Rollenbasierte Sicherheit