Quando usare una regola attestazioni personalizzata

Per scrivere una regola attestazioni personalizzata in Active Directory Federation Services (AD FS), è necessario usare il linguaggio delle regole attestazioni, ovvero un framework usato dal motore di rilascio delle attestazioni per generare, trasformare, consentire l'ingresso o filtrare le attestazioni a livello di codice. Con una regola personalizzata è possibile creare regole con una logica più complessa rispetto a un modello di regola standard. È consigliabile usare una regola personalizzata per:

  • Inviare attestazioni in base a valori estratti da un archivio di attributi SQL (Structured Query Language).

  • Inviare attestazioni in base a valori estratti da un archivio LDAP (Lightweight Directory Access Protocol) usando un filtro LDAP personalizzato.

  • Inviare attestazioni in base a valori estratti da un archivio di attributi personalizzato.

  • Inviare attestazioni solo quando sono presenti due o più attestazioni in ingresso.

  • Inviare attestazioni solo quando viene rilevata la corrispondenza di un valore attestazione in ingresso con un criterio complesso.

  • Inviare attestazioni con modifiche complesse a un valore attestazione in ingresso.

  • Creare attestazioni da usare solo in regole successive, senza inviare effettivamente le attestazioni.

  • Creare un'attestazione in uscita dal contenuto di più attestazioni in ingresso.

È anche possibile creare una regola personalizzata quando il valore attestazione dell'attestazione in uscita deve essere basato sul valore dell'attestazione in ingresso e includere contenuto aggiuntivo.

Il linguaggio delle regole attestazioni è basato su regole. Presenta una parte di condizione e una parte di esecuzione. È possibile usare la sintassi del linguaggio delle regole attestazioni per enumerare, aggiungere o modificare attestazioni in base alle esigenze dell'organizzazione. Per ulteriori informazioni sul funzionamento di ciascuna di queste parti, vedere il ruolo del linguaggio delle regole attestazioni.

Le sezioni seguenti forniscono un'introduzione di base alle regole attestazione, oltre a fornire informazioni dettagliate sui casi in cui è opportuno usare una regola attestazioni personalizzata.

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.

Importante

  • Nello snap-in Gestione di AD FS è possibile creare le regole attestazioni solo usando i 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.

Come creare la regola

Per creare la regola è prima necessario creare la sintassi per l'operazione usando il linguaggio delle regole attestazioni e quindi incollando il risultato nella casella di testo fornita nel modello Inviare attestazioni mediante un modello di regola personalizzata nelle proprietà di un trust del provider di attestazioni o di un trust della relying party nello snap-in Gestione di AD FS.

Questo modello di regola offre le opzioni seguenti:

  • Specificare un nome regola attestazione

  • Digitare una o più condizioni facoltative una dichiarazione di rilascio usando il linguaggio delle regole attestazioni di AD FS

Per altre istruzioni su come creare una regola personalizzata con questo modello, vedere Creare una regola per inviare attestazioni mediante una regola personalizzata nella Guida alla distribuzione di AD FS.

Per altre informazioni sul funzionamento del linguaggio delle regole attestazioni, visualizzare la sintassi del linguaggio delle regole attestazioni di altre regole già esistenti nello snap-in facendo clic sulla scheda Visualizza linguaggio delle regole nelle proprietà della regola corrispondente. Le informazioni fornite in questa sezione e la sintassi disponibile in questa scheda forniscono indicazioni su come creare regole personalizzate.

Per ulteriori informazioni su come utilizzare il linguaggio di regola attestazione, vedere il ruolo del linguaggio di regola attestazione.

Uso del linguaggio delle regole attestazioni

Esempio: Come combinare nomi e cognomi in base ai valori di attributo del nome dell'utente

La sintassi della regola seguente combina nomi e cognomi dei valori di attributi in un archivio di attributi specificato. Il motore dei criteri genera un prodotto cartesiano delle corrispondenze per ogni condizione. Ad esempio, l'output per i nomi {"Frank", "Alan"} e i cognomi {"Miller", "Shen"} è {"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);

Esempio: Come rilasciare un'attestazione responsabile in base alla presenza o meno di dipendenti diretti per gli utenti

La regola seguente rilascia un'attestazione responsabile solo se l'utente ha dipendenti diretti:

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

Esempio: Come rilasciare un'attestazione PPID basata su un attributo LDAP

La regola seguente rilascia un'attestazione ID personale privato (PPID) basata sugli attributi windowsaccountname e originalissuer degli utenti in un archivio di attributi LDAP:

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

Tra gli attributi comuni che possono essere usati per identificare in modo univoco l'utente per questa query sono inclusi:

  • SID utente

  • windowsaccountname

  • samaccountname