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.
Das neue Identitätsfeature von Windows Communication Foundation (WCF) ermöglicht einem Client das vorzeitige Angeben der erwarteten Identität des Diensts. Bei jeder Authentifizierung eines Servers beim Client wird die Identität mit der erwarteten Identität verglichen. (Eine Erläuterung der Identität und ihrer Funktionsweise finden Sie unter Dienstidentität und Authentifizierung.)
Sofern erforderlich, kann die Überprüfung mit einer benutzerdefinierten Identitätsüberprüfung angepasst werden. Zum Beispiel können Sie zusätzliche Dienstidentitätsüberprüfungen durchführen. In diesem Beispiel überprüft die benutzerdefinierte Identitätsprüfung zusätzliche Ansprüche in dem X.509-Zertifikat, das vom Server zurückgegeben wird. Eine Beispielanwendung finden Sie unter Identity.
So erweitern Sie die EndpointIdentity-Klasse:
Definieren Sie eine neue Klasse, die von der EndpointIdentity-Klasse abgeleitet wird. In diesem Beispiel wird die Erweiterung
OrgEndpointIdentitygenannt.Fügen Sie private Member mit Eigenschaften hinzu, die von der erweiterten IdentityVerifier-Klasse zum Ausführen der Identitätsprüfung anhand der Ansprüche im vom Dienst zurückgegebenen Sicherheitstoken verwendet wird. Dieses Beispiel definiert eine Eigenschaft: die
OrganizationClaim-Eigenschaft.
So erweitern Sie die IdentityVerifier-Klasse:
Definieren Sie eine neue Klasse, die von IdentityVerifier abgeleitet wird. In diesem Beispiel wird die Erweiterung
CustomIdentityVerifiergenannt.Überschreiben Sie die CheckAccess-Methode. Mit dieser Methode wird bestimmt, ob die Identitätsprüfung erfolgreich war oder fehlgeschlagen ist.
Die CheckAccess-Methode verfügt über zwei Parameter. Der erste Parameter ist eine Instanz der EndpointIdentity-Klasse. Der zweite Parameter ist eine Instanz der AuthorizationContext-Klasse.
Prüfen Sie in der Methodenimplementierung die Auflistung der von der ClaimSets-Eigenschaft der AuthorizationContext-Klasse zurückgegebenen Ansprüche, und führen Sie gemäß Bedarf Authentifizierungsprüfungen aus. Dieses Beispiel beginnt durch Suchen eines Anspruchs vom Typ "Distinguished Name" und anschließendes Vergleichen des Namens mit der Erweiterung von EndpointIdentity (
OrgEndpointIdentity).
So implementieren Sie die TryGetIdentity-Methode:
Implementieren Sie die TryGetIdentity-Methode, mit der bestimmt wird, ob vom Client eine Instanz der EndpointIdentity-Klasse zurückgegeben werden kann. Die WCF-Infrastruktur ruft die Implementierung der TryGetIdentity-Methode auf, um zunächst die Identität des Diensts aus der Nachricht abzurufen. Anschließend ruft die Infrastruktur die CheckAccess-Implementierung mit der zurückgegebenen EndpointIdentity und dem zurückgegebenen AuthorizationContext auf.
Fügen Sie in die TryGetIdentity-Methode folgenden Code ein:
So implementieren Sie eine benutzerdefinierte Bindung und legen den benutzerdefinierten IdentityVerifier fest:
Erstellen Sie eine Methode, von der ein Binding-Objekt zurückgegeben wird. In diesem Beispiel wird zunächst eine Instanz der WSHttpBinding-Klasse erstellt und der Sicherheitsmodus auf Message und der ClientCredentialType auf None festgelegt.
Erstellen Sie mit der CreateBindingElements-Methode BindingElementCollection.
Geben Sie SecurityBindingElement aus der Auflistung zurück, und wandeln Sie sie in eine SymmetricSecurityBindingElement-Variable um.
Legen Sie die IdentityVerifier-Eigenschaft der LocalClientSecuritySettings-Klasse auf eine neue Instanz der zuvor erstellten
CustomIdentityVerifier-Klasse fest.Mit der benutzerdefinierten Bindung, die zurückgegeben wird, wird eine Instanz des Clients und der Klasse erstellt. Der Client kann anschließend eine benutzerdefinierte Identitätsprüfung des Diensts gemäß der Anzeige im folgenden Code ausführen.
Beispiel
Im folgenden Beispiel wird eine vollständige Implementierung der IdentityVerifier-Klasse gezeigt.
Im folgenden Beispiel wird eine vollständige Implementierung der EndpointIdentity-Klasse gezeigt.
Siehe auch
Referenz
ServiceAuthorizationManager
EndpointIdentity
IdentityVerifier
Weitere Ressourcen
Identity Sample
How To: Create a Custom AuthorizationManager on a Service
Authorization Policy Sample