Share via


Quando usare una regola Inviare attributi LDAP come attestazioni

È possibile usare questa regola in Active Directory Federation Services (AD FS) quando si vogliono rilasciare attestazioni in uscita che contengono effettivamente valori di attributi LDAP (Lightweight Directory Access Protocol) esistenti in un archivio attributi e quindi associare un tipo di attestazione a ognuno degli attributi LDAP. Per altre informazioni sugli archivi di attributi, vedere Ruolo degli archivi di attributi.

Quando si usa questa regola, si rilascia un'attestazione per ogni attributo LDAP specificato e che corrisponde alla logica della regola, come descritto nella tabella seguente.

Opzione della regola Logica della regola
Mapping degli attributi LDP ai tipi di attestazioni in uscita Se l'archivio di attributi equivale all'archivio attributi specificato e l'attributo LDAP equivale al valore specificato, eseguire il mapping del valore dell'attributo LDAP al tipo di attestazione in uscita specificato e rilasciare l'attestazione.

Le sezioni seguenti forniscono un'introduzione di base alle regole attestazione, oltre a informazioni dettagliate su quando usare la regola Inviare attributi LDAP come attestazioni.

Informazioni sulle regole attestazioni

Una regola attestazioni rappresenta un'istanza della logica di business che accetta un'attestazione in ingresso, applica una condizione (se x quindi y) e genera un'attestazione in uscita in base ai parametri della condizione. L'elenco seguente fornisce suggerimenti importanti sulle regole attestazioni da tenere presenti prima di procedere con la lettura di questo argomento:

  • Nello snap-in di gestione di AD FS, le regole attestazioni possono essere create solo utilizzando modelli di regola attestazioni

  • Le regole attestazioni elaborano le attestazioni in ingresso direttamente da un provider di attestazioni (ad esempio Active Directory o un altro servizio federativo) oppure dall'output delle regole di trasformazione accettazione in un trust del provider di attestazioni.

  • Le regole attestazioni sono elaborate dal motore di rilascio delle attestazioni in ordine cronologico entro un determinato set di regole. Impostando la precedenza sulle regole, è possibile perfezionare o filtrare ulteriormente le attestazioni generate dalle regole precedenti all'interno di un set di regole specificato.

  • Per i modelli di regola attestazioni è sempre necessario specificare un tipo di attestazione in ingresso. Tuttavia, è possibile elaborare più valori di attestazione con lo stesso tipo di attestazione usando una singola regola.

Per ulteriori informazioni sulle regole attestazione e i set di regole attestazione, vedere ruolo delle attestazioni regole. Per ulteriori informazioni sulle modalità di elaborazione delle regole, vedere il ruolo del motore di attestazioni. Per ulteriori informazioni, modalità di elaborazione dei set di regole attestazione, vedere ruolo delle Pipeline delle attestazioni.

Mapping degli attributi LDP ai tipi di attestazioni in uscita

Quando si usa il modello Inviare attributi LDAP come attestazioni, è possibile selezionare gli attributi da un archivio attributi LDAP, ad esempio Active Directory o Servizi di dominio Active Directory, per inviare i relativi valori come attestazioni alla relying party. In tal modo si esegue praticamente il mapping di attributi LDAP specifici da un archivio di attributi definito dall'utente a un set di attestazioni in uscita che può essere usato per l'autorizzazione.

Usando questo modello, è possibile aggiungere più attributi, che verranno inviati come più attestazioni, da una singola regola. Ad esempio, è possibile usare questo modello di regola per creare una regola che eseguirà la ricerca di valori attributo per gli utenti autenticati dagli attributi company e department di Active Directory e quindi invierà tali valori come due diverse attestazioni in uscita.

È anche possibile usare questa regola per inviare tutte le appartenenze a gruppi dell'utente. Se si vuole inviare solo le singole appartenenze ai gruppi, usare il modello di regola Invio dell'appartenenza a un gruppo come attestazione. Per altre informazioni, vedere When to Use a Send Group Membership as a Claim Rule.

Come creare la regola

È possibile creare questa regola usando la lingua delle regole attestazione oppure usando il modello di regola Inviare attributi LDAP come attestazioni nello snap-in Gestione di AD FS. Questo modello di regola offre le opzioni di configurazione seguenti:

  • Specificare un nome regola attestazione

  • Selezionare un archivio di attributi da cui estrarre gli attributi LDAP

  • Mapping degli attributi LDP ai tipi di attestazioni in uscita

Per altre informazioni su come creare questa regola, vedere Creare una regola per inviare attributi LDAP come attestazioni.

Uso del linguaggio delle regole attestazioni

Se è necessario confrontare la query ad Active Directory, AD DS o Active Directory Lightweight Directory Services (AD LDS) rispetto a un attributo LDAP diverso da samAccountname, è necessario usare invece una regola personalizzata. Se non è presente alcuna attestazione Nome account Windows nel set di input, è necessario usare anche una regola personalizzata per specificare l'attestazione da usare per l'esecuzione di query di Servizi di dominio Active Directory o AD LDS.

Gli esempi seguenti consentono di comprendere alcuni dei modi in cui è possibile creare una regola personalizzata usando il linguaggio delle regole attestazioni per interrogare ed estrarre i dati in un archivio attributi.

Esempio: Come eseguire le query in un archivio attributi AD LDS e restituire un valore specificato

I parametri devono essere separati da punto e virgola. Il primo parametro è il filtro LDAP. I parametri successivi sono gli attributi da restituire in tutti gli oggetti corrispondenti.

L'esempio seguente mostra come cercare un utente con l'attributo sAMAccountName e rilasciare un'attestazione per l'indirizzo di posta elettronica usando il valore dell'attributo mail dell'utente:

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}"));

L'esempio seguente mostra come cercare un utente con l'attributo mail e rilasciare le attestazioni per il titolo e il nome visualizzato usando il valore degli attributi title e displayname dell'utente:

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);

L'esempio seguente mostra come cercare un utente in base a indirizzo e titolo e quindi rilasciare un'attestazione per nome visualizzato usando l'attributo displayname dell'utente:

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);

Esempio: Come eseguire le query in un archivio attributi Active Directory e restituire un valore specificato

La query di Active Directory deve includere il nome dell'utente (con il nome di dominio) come parametro finale in modo che l'archivio attributi di Active Directory possa eseguire la query sul dominio corretto. In caso contrario, sarà supportata la stessa sintassi.

L'esempio seguente mostra come cercare un utente con l'attributo sAMAccountName nel relativo dominio e quindi restituire l'attributo mail:

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);

Esempio: Come eseguire una query di un archivio attributi di Active Directory in base al valore di un'attestazione in ingresso

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

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

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

         query = ";mail;{0}",

         param = c.Value)

La query precedente è costituita dalle parti seguenti:

  • Il filtro LDAP: specifica questa parte della query per recuperare gli oggetti per cui si vogliono richiedere gli attributi. Per informazioni generali sulle query LDAP valide, vedere RFC 2254. Quando si esegue una query su un archivio attributi di Active Directory e non si specifica un filtro LDAP, si presuppone la query samAccountName={0} e l'archivio attributi di Active Directory prevede un parametro che può inserire il valore per {0}. In caso contrario, la query genererà un errore. Per un archivio attributi LDAP diverso da Active Directory, non è possibile omettere la parte del filtro LDAP della query, altrimenti la query genererà un errore.

  • Specifica degli attributi: in questa seconda parte della query, si specificano gli attributi (separati da virgole se si usano più valori degli attributi) e non si vogliono includere gli oggetti filtrati. Il numero di attributi specificato deve corrispondere al numero di tipi di attestazione definiti nella query.

  • Dominio di Active Directory: specificare l'ultima parte della query solo quando l'archivio attributi è Active Directory (non è necessario quando si esegue una query altri archivi di attributi). Questa parte della query viene usata per specificare l'account utente nella forma dominio\nome. L'archivio attributi di Active Directory usa la parte del dominio per determinare il controller di dominio appropriato per connettersi ed eseguire la query e richiedere gli attributi.

Esempio: Come usare due regole personalizzate per estrarre l'indirizzo di posta elettronica del manager da un attributo in Active Directory

Le due regole personalizzate seguenti, quando usate insieme nell'ordine sotto illustrato, eseguono una query su Active Directory relativa all'attributo manager dell'account utente (Regola 1) e quindi usare tale attributo per eseguire la query sull'account utente del responsabile per l'attributo mail (Regola 2). Infine, l'attributo mail viene rilasciato come attestazione "ManagerEmail". In sintesi, la Regola 1 esegue una query su Active Directory e passa il risultato della query alla Regola 2, che quindi estrae i valori della posta elettronica del responsabile.

Ad esempio, quando termina l'esecuzione di queste regole, viene rilasciata un'attestazione contenente l'indirizzo di posta elettronica del responsabile relativo a un utente nel dominio corp.fabrikam.com.

Regola 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);

Regola 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"));

Nota

Queste regole funzionano solo se il responsabile dell'utente si trova nello stesso dominio dell'utente (corp.fabrikam.com in questo esempio).

Altri riferimenti

Creare una regola per inviare attributi LDAP come attestazioni