Sichern von Workflowdiensten
Dieses Thema gilt für Windows Workflow Foundation 4.
Im Beispiel für einen gesicherten Workflowdienst werden die folgenden Verfahren veranschaulicht:
Erstellen eines grundlegenden Workflowdiensts mit den Aktivitäten Receive und SendReply.
Verwenden der Windows Communication Foundation (WCF)-Konfiguration, um sichere Endpunkte für den Workflowdienst zu definieren.
Erstellen von Ansprüchen in einer benutzerdefinierten Richtlinie und Überprüfen von Ansprüchen mithilfe von ServiceAuthorizationManager.
Veranschaulicht
Verwenden der WCF-Sicherheit, um die Kommunikation zwischen Client und Workflowdienst zu sichern, anspruchsbasierte Autorisierung.
Diskussion
In diesem Beispiel wird die Verwendung der WCF-Sicherheitsinfrastruktur veranschaulicht, um einen Workflowdienst wie einen normalen WCF-Dienst zu sichern. Es wird ein benutzerdefinierter Anspruch zur Autorisierung verwendet. In diesem Fall werden WSHttpBinding und der Nachrichtensicherheitsmodus mit Windows-Anmeldeinformationen verwendet.
Das benutzerdefinierte IAuthorizationPolicy-Element (CustomNameCheckerPolicy
) überprüft den Windows-Benutzernamen des Clients auf ein bestimmtes Zeichen. Wenn dieses Zeichen vorhanden ist, wird der Anspruch erstellt und EvaluationContext hinzugefügt. Dadurch erklärt die benutzerdefinierte Richtlinie, dass der Client dieses Zeichen im Benutzernamen aufweist. Dieser Anspruch kann während der gesamten Lebensdauer des Aufrufs abgefragt werden. Sie können dieses Zeichen in Constants.cs
finden.
Die Autorisierungsrichtlinie sucht in SecureWorkFlowAuthZManager
nach dem Anspruch. Wird er gefunden, wird true zurückgegeben, und der Workflow kann den Vorgang fortsetzen. Andernfalls wird false zurückgegeben. Dadurch wird die Meldung "Zugriff verweigert" an den Client zurückgegeben. Andere Ansprüche sind im Kontext vorhanden und können auch in SecureWorkFlowAuthZManager
untersucht werden.
So führen Sie das Beispiel aus
Führen Sie Visual Studio 2010 mit Administratorrechten aus.
Laden Sie "SecuringWorkflowServices.sln" in Visual Studio 2010.
Drücken Sie F6, um die Projektmappe zu kompilieren.
Legen Sie das Service-Projekt als Startprojekt für die Projektmappe fest.
Drücken Sie STRG+F5, um den Dienst ohne Debugging zu starten.
Legen Sie das Client-Projekt als Startprojekt für die Projektmappe fest.
Drücken Sie STRG+F5, um den Client ohne Debugging zu starten.
Hinweis: |
---|
Die Beispiele sind möglicherweise bereits auf dem Computer installiert. Überprüfen Sie das folgende (standardmäßige) Verzeichnis, bevor Sie fortfahren.
<Installationslaufwerk>:\WF_WCF_Samples
Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)- und WF-Beispiele herunterzuladen. Dieses Beispiel befindet sich im folgenden Verzeichnis.
<Installationslaufwerk>:\WF_WCF_Samples\WF\Scenario\Services\SecuringWorkflowServices
|