Freigeben über


Gewusst wie: Ansprüche vergleichen

Die Identitätsmodellinfrastruktur in Windows Communication Foundation (WCF) wird verwendet, um die Autorisierungsüberprüfung auszuführen. Eine gängige Aufgabe besteht darin, die Ansprüche im Autorisierungskontext mit den Ansprüchen zu vergleichen, die erforderlich sind, um die angeforderte Aktion auszuführen oder auf die angeforderte Ressource zuzugreifen. In diesem Thema wird beschrieben, wie Ansprüche verglichen werden, einschließlich integrierter und benutzerdefinierter Anspruchstypen. Weitere Informationen über die Identitätsmodellinfrastruktur finden Sie unter Verwalten von Ansprüchen und Autorisierung mit dem Identitätsmodell.

Der Vergleich von Ansprüchen umfasst das Vergleichen der drei Bestandteile des Anspruchs (Typ, Recht und Ressource) mit den entsprechenden Teilen eines anderen Anspruchs, um festzustellen, ob sie identisch sind. Es liegen z. B. zwei Name-Ansprüche vor.

Beide Ansprüche haben den Anspruchstyp Name, das Recht PossessProperty und eine Ressource der Zeichenfolge "someone". Da alle drei Teile des Anspruchs gleich sind, sind die Ansprüche identisch.

Die integrierten Anspruchstypen werden mit der Equals-Methode verglichen. Anspruchsspezifischer Vergleichscode wird verwendet, falls erforderlich. Es liegen z. B. die folgenden zwei Benutzerprinzipalnamen (UPN)-Ansprüche vor:

Der Vergleichscode in der Equals-Methode gibt true zurück und nimmt an, dass example\someone denselben Domänenbenutzer identifiziert wie "someone@example.com".

Benutzerdefinierte Anspruchstypen können auch mit der Equals-Methode verglichen werden. In Fällen, in denen der von der Resource-Eigenschaft des Anspruchs zurückgegebene Typ kein primitiver Typ ist, gibt Equals nur true zurück, wenn die von den Resource-Eigenschaften zurückgegebenen Werte mit der Equals-Methode identisch sind. In Fällen, in denen dies nicht zutrifft, überschreibt der von der Resource-Eigenschaft zurückgegebene benutzerdefinierte Typ die Equals-Methode und die GetHashCode-Methode, um die erforderliche benutzerdefinierte Verarbeitung auszuführen.

Vergleichen von integrierten Ansprüchen

  1. Wenn zwei Instanzen der Claim-Klasse vorliegen, verwenden Sie Equals für den Vergleich, wie im folgenden Code gezeigt.

Vergleichen von benutzerdefinierten Ansprüchen mit primitiven Ressourcentypen

  1. Für benutzerdefinierte Ansprüche mit primitiven Ressourcentypen kann der Vergleich wie für integrierte Ansprüche erfolgen, wie im folgenden Code veranschaulicht.

  2. Für benutzerdefinierte Ansprüche mit struktur- oder klassenbasierten Typen überschreibt der Ressourcentyp die Equals-Methode.

  3. Überprüfen Sie zunächst, ob der obj-Parameter NULL ist, und wenn ja, geben Sie false zurück.

  4. Rufen Sie anschließend ReferenceEquals auf, und übergeben Sie this und obj als Parameter. Wenn true zurückgegeben wird, geben Sie true zurück.

  5. Versuchen Sie danach, obj einer lokalen Variable des Klassentyps zuzuweisen. Wenn dieser Versuch fehlschlägt, lautet die Referenz NULL. In derartigen Fällen wird false zurückgegeben.

  6. Führen Sie den benutzerdefinierten Vergleich durch, der notwendig ist, um den aktuellen Anspruch ordnungsgemäß mit dem bereitgestellten Anspruch zu vergleichen.

Beispiel

Das folgende Beispiel zeigt einen Vergleich von benutzerdefinierten Ansprüchen, deren Anspruchsressource ein nicht primitiver Typ ist.

Siehe auch

Aufgaben

Gewusst wie: Erstellen eines benutzerdefinierten Anspruchs

Konzepte

Verwalten von Ansprüchen und Autorisierung mit dem Identitätsmodell