Verwenden einer Regel zum Senden von LDAP-Attributen als Ansprüche

Sie können diese Regel in Active Directory-Verbunddienste (AD FS) verwenden, wenn Sie ausgehende Ansprüche ausgeben möchten, die tatsächliche LDAP (Lightweight Directory Access Protocol)-Attributwerte in einem Attributspeicher enthalten, und dann jeweils einen Anspruchstyp einem der LDAP-Attribute zuordnen möchten. Weitere Informationen zu Attributspeichern finden Sie unter Die Rolle von Attributspeichern.

Wenn Sie diese Regel verwenden, geben Sie einen Anspruch für jedes angegebene LDAP-Attribut aus, das der Regellogik entspricht, wie in der folgenden Tabelle beschrieben.

Regeloption Regellogik
Zuordnen von LDAP-Attributen zu ausgehenden Anspruchstypen Wenn der Attributspeicher dem angegebenen Attributspeicher entspricht und das LDAP-Attribut dem angegebenen Wert, dann wird der LDAP-Attributwert dem angegebenen ausgehenden Anspruch zugeordnet, und der Anspruch wird ausgegeben.

Die folgenden Abschnitte enthalten eine grundlegende Einführung in Anspruchsregeln. Darüber hinaus werden Details zu Anwendungsszenarios für die Verwendung der Regel „LDAP-Attribute als Ansprüche senden“ beschrieben.

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. Die folgende Liste enthält wichtige Tipps zu Anspruchsregeln, die Sie kennen sollten, bevor Sie fortfahren, dieses Thema zu lesen:

  • 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 den 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.

Zuordnen von LDAP-Attributen zu ausgehenden Anspruchstypen

Wenn Sie die Regelvorlage „LDAP-Attribute als Ansprüche senden“ verwenden, können Sie Attribute aus einem LDAP-Attributspeicher wie Active Directory oder Active Directory-Domänendienste (AD DS) auswählen, um deren Werte als Ansprüche an die vertrauende Seite zu senden. Damit werden im Prinzip bestimmte LDAP-Attribute aus einem von Ihnen festgelegten Attributspeicher einem Satz von ausgehenden Ansprüchen zugeordnet, der für die Autorisierung verwendet werden kann.

Mithilfe dieser Vorlage können Sie mehrere Attribute hinzufügen, die von einer Regel aus als mehrere Ansprüche gesendet werden. Sie können diese Regelvorlage z. B. verwenden, um eine Regel zu erstellen, die Attributwerte für authentifizierte Benutzer aus den Active Directory-Attributen Unternehmen und Abteilung heraussucht und dann diese Werte als zwei unterschiedliche ausgehende Ansprüche sendet.

Mit dieser Regel können Sie auch alle Gruppenmitgliedschaften der Benutzer*innen senden. Wenn Sie nur einzelne Gruppenmitgliedschaften senden möchten, verwenden Sie die Regelvorlage „Gruppenmitgliedschaft als Anspruch senden“. Weitere Informationen finden Sie unter When to Use a Send Group Membership as a Claim Rule.

Erstellen dieser Regel

Sie können diese Regel entweder mit der Anspruchsregelsprache oder mit der Regelvorlage „LDAP-Attribute als Ansprüche senden“ im AD FS-Verwaltungs-Snap-In erstellen. Diese Regelvorlage bietet die folgenden Konfigurationsoptionen:

  • Angeben eines Anspruchsregelnamens

  • Wählen Sie einen Attributspeicher aus, aus dem die LDAP-Attribute extrahiert werden.

  • Zuordnen von LDAP-Attributen zu ausgehenden Anspruchstypen

Weitere Informationen zum Erstellen dieser Regel finden Sie unter Erstellen einer Regel zum Senden von LDAP-Attributen als Anspruch.

Verwenden der Anspruchsregelsprache

Wenn die Abfrage an Active Directory, AD DS oder AD LDS (Active Directory Lightweight Directory Services) mit einem anderen LDAP-Attribut als sAMAccountName verglichen werden muss, müssen Sie stattdessen eine benutzerdefinierte Regel verwenden. Enthält der Eingabesatz keinen Windows-Kontonamenanspruch, müssen Sie ebenfalls eine benutzerdefinierte Regel verwenden, um den Anspruch anzugeben, der für die Abfrage von AD DS oder AD LDS verwendet wird.

Die folgenden Beispielen sollen die verschiedenen Methoden zum Erstellen von benutzerdefinierten Regeln mithilfe der Anspruchsregelsprache für das Abfragen und Extrahieren von Daten in einem Attributspeicher veranschaulichen.

Beispiel: Abfragen eines AD LDS-Attributspeichers und Zurückgeben eines angegebenen Werts

Die Parameter müssen durch ein Semikolon voneinander getrennt werden. Der erste Parameter ist der LDAP-Filter. Die nachfolgende Parameter sind die Attribute, die bei allen übereinstimmenden Objekten zurückgegeben werden sollen.

Das folgende Beispiel veranschaulicht das Suchen eines Benutzers mithilfe des sAMAccountName-Attributs und das Ausstellen eines E-Mail-Adressanspruchs mithilfe des Werts des mail-Attributs des Benutzers:

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "AD LDS", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = "sAMAccountName={0};mail", param = regexreplace(c.Value, "(?<domain>[^\\]+)\\(?<user>.+)", "${user}"));

Das folgende Beispiel veranschaulicht das Suchen eines Benutzers mithilfe des mail-Attributs und das Ausstellen eines Titel- und Anzeigenamenanspruchs mithilfe des Werts der Attribute title und displayname des Benutzers:

c:[Type == " http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress ", Issuer == "AD AUTHORITY"]
=> issue(store = "AD LDS ", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/title","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/displayname"), query = "mail={0};title;displayname", param = c.Value);

Das folgende Beispiel veranschaulicht das Suchen eines Benutzers mithilfe der Attribute „mail“ und „title“ und das Ausstellen eines Anzeigenamenanspruchs mithilfe des displayname-Attributs des Benutzers:

c1:[Type == " http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"] && c2:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/title"]
=> issue(store = "AD LDS ", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/displayname"), query = "(&(mail={0})(title={1}));displayname", param = c1.Value, param = c2.Value);

Beispiel: Abfragen eines Active Directory-Attributspeichers und Zurückgeben eines angegebenen Werts

Die Active Directory-Abfrage muss den Namen des Benutzers (mit dem Domänennamen) als letzten Parameter enthalten, damit der Active Directory-Attributspeicher die richtige Domäne abfragen kann. Ansonsten wird die gleiche Syntax unterstützt.

Das folgenden Beispiel veranschaulicht das Suchen eines Benutzers mithilfe des sAMAccountName-Attributs in seiner Domäne und das Zurückgeben des zugehörigen mail-Attributs:

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = "sAMAccountName={0};mail;{1}", param = regexreplace(c.Value, "(?<domain>[^\\]+)\\(?<user>.+)", "${user}"), param = c.Value);

Beispiel: Abfragen des Active Directory-Attributspeichers anhand des Werts eines eingehenden Anspruchs

c:[Type == "http://test/name"]

   => issue(store = "Enterprise AD Attribute Store",

         types = ("http://test/email"),

         query = ";mail;{0}",

         param = c.Value)

Die vorherige Abfrage besteht aus den folgenden drei Teilen:

  • LDAP-Filter: Sie geben diesen Teil der Abfrage an, um die Objekte abzurufen, für die Sie Attribute abfragen möchten. Allgemeine Informationen zu gültigen LDAP-Abfragen finden Sie in RFC 2254. Wenn Sie einen Active Directory-Attributspeicher abfragen und keinen LDAP-Filter angeben, wird als Abfrage „sAMAccountName = {0}“ angenommen, und der Active Directory-Attributspeicher erwartet einen Parameter als Wert für {0}. Andernfalls wird für die Abfrage ein Fehler zurückgegeben. Für andere LDAP-Attributspeicher als Active Directory dürfen Sie den LDAP-Filter in der Abfrage nicht weggelassen, da die Abfrage einen Fehler zurückgibt.

  • Attributspezifikation: In diesem zweiten Teil der Abfrage geben Sie die Attribute (mehrere Attributwerte können durch Trennzeichen getrennt werden) an, um die Objekte zu filtern. Die Anzahl der angegebenen Attribute muss die Anzahl der Anspruchstypen entsprechen, die Sie in der Abfrage definiert haben.

  • Active Directory-Domäne: Den letzten Teil der Abfrage geben Sie nur an, wenn der Attributspeicher Active Directory ist. (Dies ist nicht erforderlich, wenn Sie andere Attributspeicher abfragen.) Dieser Teil der Abfrage wird verwendet, um das Benutzerkonto im Format „Domäne\Name“ anzugeben. Der Active Directory-Attributspeicher bestimmt mithilfe des Domänenteils den entsprechenden Domänencontroller, um mit diesem eine Verbindung herzustellen, die Abfrage auszuführen und die Attribute anzufordern.

Beispiel: Verwenden von zwei benutzerdefinierten Regeln zum Extrahieren der E-Mail-Adresse aus einem Attribut in Active Directory

Die folgenden beiden benutzerdefinierten Regeln fragen, sofern sie in der unten angegebenen Reihenfolge zusammen verwendet werden, Active Directory nach dem manager-Attribut des Benutzerkontos (Regel 1) ab und verwenden dieses dann, um aus dem Benutzerkonto des Managers das mail-Attribut abzurufen (Regel 2). Abschließend wird das mail-Attribut als „ManagerEmail“-Anspruch ausgestellt. Zusammenfassend fragt Regel 1 Active Directory ab und übergibt das Ergebnis der Abfrage an Regel 2, die dann die E-Mail-Werte der Manager extrahiert.

Nach Abschluss der Ausführung dieser Regeln wird ein Anspruch ausgestellt, der die E-Mail-Adresse des Managers für eine*n Benutzer*in in der Domäne „corp.fabrikam.com“ enthält.

Regel 1

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
=> add(store = "Active Directory", types = ("http://schemas.xmlsoap.org/claims/ManagerDistinguishedName"), query = "sAMAccountName=
{0};mail,userPrincipalName,extensionAttribute5,manager,department,extensionAttribute2,cn;{1}", param = regexreplace(c.Value, "(?
<domain>[^\\]+)\\(?<user>.+)", "${user}"), param = c.Value);

Regel 2

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
&& c1:[Type == "http://schemas.xmlsoap.org/claims/ManagerDistinguishedName"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/claims/ManagerEmail"), query = "distinguishedName={0};mail;{1}", param = c1.Value,
param = regexreplace(c1.Value, ".*DC=(?<domain>.+),DC=corp,DC=fabrikam,DC=com", "${domain}\username"));

Hinweis

Diese Regeln können angewendet werden, wenn sich der Manager eines Benutzers oder einer Benutzerin in derselben Domäne wie der*die Benutzer*in befindet (in diesem Beispiel „corp.fabrikam.com“).

Weitere Verweise

Erstellen einer Regel zum Senden von LDAP-Attributen als Ansprüche