Wann sollte eine benutzerdefinierte Anspruchsregel verwendet werden?

Sie schreiben eine benutzerdefinierte Anspruchsregel in den Active Directory-Verbunddiensten (AD FS) mithilfe der Anspruchsregelsprache. Diese bildet das Framework, das die Anspruchsausstellungs-Engine verwendet, um Ansprüche programmgesteuert zu generieren, zu transformieren, weiterzuleiten und zu filtern. Mithilfe einer benutzerdefinierten Regel können Sie Regeln mit komplexerer Logik als bei einer Standardvorlage erstellen. Erwägen Sie eine benutzerdefinierte Regel, wenn Sie Folgendes vorhaben:

  • Senden von Ansprüchen basierend auf Werten, die aus einem SQL-Attributspeicher (Structured Query Language) extrahiert werden.

  • Senden von Ansprüchen basierend auf Werten, die mit einem benutzerdefinierten LDAP-Filter aus einem LDAP-Attributspeicher (Lightweight Directory Access Protocol) extrahiert werden.

  • Senden von Ansprüchen basierend auf Werten, die aus einem benutzerdefinierten Attributspeicher extrahiert werden.

  • Senden von Ansprüchen nur dann, wenn zwei oder mehr eingehende Ansprüche vorhanden sind.

  • Senden von Ansprüchen nur dann, wenn ein eingehender Anspruchswert einem komplexen Muster entspricht.

  • Senden von Ansprüchen mit komplexen Änderungen am Wert eines eingehenden Anspruchs.

  • Erstellen von Ansprüchen für die Verwendung in späteren Regeln, ohne die Ansprüche tatsächlich zu senden.

  • Erstellen eines ausgehenden Anspruchs anhand des Inhalts von mindestens einem eingehenden Anspruch.

Sie können auch eine benutzerdefinierte Regel verwenden, wenn der Anspruchswert des ausgehenden Anspruchs auf dem Wert des eingehenden Anspruchs basieren muss, jedoch auch zusätzlichen Inhalt aufweisen muss.

Die Anspruchsregelsprache ist regelbasiert. Sie hat einen Bedingungsteil und einen Ausführungsteil. Sie können die Syntax der Anspruchsregelsprache verwenden, um Ansprüche gemäß den Bedürfnissen Ihrer Organisation aufzulisten, hinzuzufügen, zu löschen oder zu ändern. Weitere Informationen zur Funktionsweise dieser Teile finden Sie unter Die Rolle der Anspruchsregelsprache.

Die folgenden Abschnitte enthalten eine grundlegende Einführung in Anspruchsregeln. Sie bieten außerdem Details dazu, wann eine benutzerdefinierte Anspruchsregel verwendet werden sollte.

Informationen zu Anspruchsregeln

Eine Anspruchsregel stellt eine Instanz der Geschäftslogik dar, die auf einen eingehenden Anspruch eine Bedingung anwendet (wenn x, dann y) und auf der Grundlage der Bedingungsparameter einen ausgehenden Anspruch erzeugt.

Wichtig

  • Im AD FS-Verwaltungs-Snap-In können Anspruchsregeln nur mit Anspruchsregelvorlagen erstellt werden.
  • Anspruchsregeln verarbeiten eingehende Ansprüche entweder direkt von einem Anspruchsanbieter (wie Active Directory oder einem anderen Verbunddienst) oder von der Ausgabe der Akzeptanztransformationsregeln in einer Anspruchsanbietervertrauensstellung aus.
  • Anspruchsregeln werden von der Anspruchsausstellungs-Engine chronologisch nach einem bestimmten Regelsatz verarbeitet. Indem Sie eine Rangfolge der Regeln festlegen, können Sie Ansprüche, die durch vorausgehende Regeln in einem bestimmten Regelsatz generiert werden, weiter optimieren oder filtern.
  • Anspruchsregelvorlagen erfordern immer, dass Sie einen eingehenden Anspruchstyp angeben. Allerdings können Sie mehrere Anspruchswerte mit dem gleichen Anspruchstyp mithilfe einer einzigen Regel verarbeiten.

Ausführlichere Informationen zu Anspruchsregeln und Anspruchsregelsätzen finden Sie unter Die Rolle von Anspruchsregeln. Weitere Informationen dazu, wie Regeln verarbeitet werden, finden Sie unter Die Rolle der Anspruchs-Engine. Weitere Informationen dazu, wie Anspruchsregelsätze verarbeitet werden, finden Sie unter Die Rolle der Anspruchspipeline.

Erstellen dieser Regel

Sie erstellen diese Regel durch Definieren der Syntax, die Sie für Ihren Betrieb benötigen, mithilfe der Anspruchsregelsprache. Dann fügen Sie das Ergebnis in das Textfeld der Vorlage „Anspruch mithilfe einer benutzerdefinierten Regel senden“ für die Eigenschaften entweder einer Anspruchsanbieter-Vertrauensstellung oder einer Vertrauensstellung der vertrauenden Seite im AD FS-Verwaltungs-Snap-In ein.

Diese Regelvorlage bietet die folgenden Optionen:

  • Angeben eines Anspruchsregelnamens

  • Geben Sie mindestens eine optionale Bedingung und eine Ausstellungsanweisung mithilfe der AD FS-Anspruchsregelsprache ein.

Weitere Anweisungen zum Erstellen einer benutzerdefinierten Regel mithilfe dieser Vorlage finden Sie unter Erstellen einer Regel zum Senden von Ansprüchen mithilfe einer benutzerdefinierten Regel im AD FS-Bereitstellungshandbuch.

Um die Funktionsweise der Anspruchsregelsprache besser zu verstehen, zeigen Sie die Syntax der Anspruchsregelsprache von anderen Regeln an, die bereits im Snap-In vorhanden sind, indem Sie in den Eigenschaften der jeweiligen Regel auf die Registerkarte Regelsprache anzeigen klicken. Anhand der Informationen in diesem Abschnitt und der Syntaxinformationen auf dieser Registerkarte erhalten Sie einen Einblick in die Vorgehensweise zum Erstellen von eigenen benutzerdefinierten Regeln.

Weitere Informationen zur Verwendung der Anspruchsregelsprache finden Sie unter Die Rolle der Anspruchsregelsprache.

Verwenden der Anspruchsregelsprache

Beispiel: Kombinieren von Vor- und Nachnamen basierend auf den Namensattributwerten eines Benutzers

Die folgende Regelsyntax kombiniert Vor- und Nachnamen aus Attributwerten in einem bestimmten Attributspeicher. Die Richtlinien-Engine bildet ein kartesisches Produkt mit den Ergebnissen für jede Bedingung. Beispielsweise lautet die Ausgabe für Vornamen {"Frank", "Alan"} und Nachnamen {"Miller", "Shen"} wie folgt: {"Frank Miller", "Frank Shen", "Alan Miller", "Alan Shen"}:

c1:[type == "http://exampleschema/firstname" ]
&&  c2:[type == "http://exampleschema/lastname",]
=> issue(type = "http://exampleschema/name", value = c1.value + "  " + c2.value);

Beispiel: Ausstellen eines Vorgesetztenanspruchs basierend darauf, ob Benutzer direkt unterstellte Mitarbeiter haben

Die folgende Regel stellt einen Vorgesetztenanspruch nur aus, wenn der Benutzer direkt unterstellte Mitarbeiter hat:

c:[type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"] => add(store = "SQL Store", types = ("http://schemas.xmlsoap.org/claims/Reports"), query = "SELECT Reports FROM dbo.DirectReports WHERE UserName = {0}", param = c.value );
count([type == "http://schemas.xmlsoap.org/claims/Reports"] ) > 0 => issue(= "http://schemas.xmlsoap.org/claims/ismanager", value = "true");

Beispiel: Ausstellen eines PPID-Anspruchs basierend auf einem LDAP-Attribut

Die folgende Regel stellt einen PPID-Anspruch (private persönliche ID) auf Grundlage der Attribute windowsaccountname und originalissuer von Benutzern in einem LDAP-Attributspeicher aus:

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
 => issue(store = "_OpaqueIdStore", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier"), query = "{0};{1};{2}", param = "ppid", param = c.Value, param = c.OriginalIssuer);

Zu allgemeinen Attribute, die zur eindeutigen Identifizierung des Benutzers für diese Abfrage verwendet werden können, gehören die folgenden:

  • Benutzer-SID

  • windowsaccountname

  • samaccountname