Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Beispiel wird veranschaulicht, wie Sie die <ServiceAuthorization> verwenden, um die Verwendung des PrincipalPermissionAttribute Attributs zum Autorisieren des Zugriffs auf Dienstvorgänge zu ermöglichen. Dieses Beispiel basiert auf dem Beispiel " Erste Schritte ". Der Dienst und der Client werden mithilfe des <wsHttpBinding> konfiguriert. Das mode-Attribut der <Sicherheit> wurde auf Message festgelegt, und clientCredentialType wurde auf Windows festgelegt. Die PrincipalPermissionAttribute Methode wird auf jede Dienstmethode angewendet und verwendet, um den Zugriff auf die einzelnen Vorgänge einzuschränken. Der Aufrufer muss ein Windows-Administrator sein, um auf jeden Vorgang zuzugreifen.
In diesem Beispiel ist der Client eine Konsolenanwendung (.exe) und der Dienst wird von Internetinformationsdienste (IIS) gehostet.
Hinweis
Die Einrichtungsverfahren und Build-Anweisungen für dieses Beispiel befinden sich am Ende dieses Themas.
Die Dienstkonfigurationsdatei verwendet die <serviceAuthorization> , um das principalPermissionMode Attribut festzulegen:
<behaviors>
<serviceBehaviors>
<behavior>
<!-- The serviceAuthorization behavior sets the
principalPermissionMode to UseWindowsGroups.
This puts a WindowsPrincipal on the current thread when a
service is invoked. -->
<serviceAuthorization principalPermissionMode="UseWindowsGroups" />
</behavior>
</serviceBehaviors>
</behaviors>
Durch das Festlegen von principalPermissionMode auf UseWindowsGroups wird die Verwendung von PrincipalPermissionAttribute basierend auf Windows-Gruppennamen ermöglicht.
Die PrincipalPermissionAttribute Anwendung wird auf jeden Vorgang angewendet, damit der Aufrufer Teil der Windows-Administratorengruppe sein muss, wie im folgenden Beispielcode gezeigt.
[PrincipalPermission(SecurityAction.Demand,
Role = "Builtin\\Administrators")]
public double Add(double n1, double n2)
{
double result = n1 + n2;
return result;
}
Wenn Sie das Beispiel ausführen, werden die Vorgangsanforderungen und -antworten im Clientkonsolenfenster angezeigt. Der Client kommuniziert erfolgreich mit jedem Vorgang, wenn er unter einem Konto ausgeführt wird, das Teil der Gruppe "Administratoren" ist; andernfalls wird der Zugriff verweigert. Um mit Autorisierungsfehlern zu experimentieren, führen Sie den Client unter einem Konto aus, das nicht Teil der Gruppe "Administratoren" ist. Drücken Sie im Konsolenfenster die EINGABETASTE, um den Client zu schließen.
Ein Service kann über Autorisierungsfehler benachrichtigt werden, indem ein IErrorHandler implementiert wird. Informationen zur Implementierung finden Sie unter Erweitern der Kontrolle über die Fehlerbehandlung und -berichterstellungIErrorHandler.
So können Sie das Beispiel einrichten, erstellen und ausführen
Stellen Sie sicher, dass Sie das One-Time Setup-Verfahren für die Windows Communication Foundation-Beispieleausgeführt haben.
Um die C#- oder Visual Basic .NET-Edition der Lösung zu erstellen, befolgen Sie die Anweisungen in Building the Windows Communication Foundation Samples.
Führen Sie das Beispiel in einer Einzel- oder computerübergreifenden Konfiguration aus, indem Sie die Anweisungen unter Ausführen der Windows Communication Foundation-Beispiele befolgen.