Когда следует использовать настраиваемое правило для утверждений
Вы пишете настраиваемое правило утверждения в службы федерации Active Directory (AD FS) (AD FS) с помощью языка правила утверждения, который является платформой, используемой подсистемой выдачи утверждений для программного создания, преобразования, передачи и фильтрации утверждений. Используя настраиваемое правило, вы можете создавать правила с более сложной логикой, чем с помощью стандартного шаблона правил. Рассмотрите возможность использования настраиваемого правила, когда требуется выполнять следующее.
Отправлять утверждения на основе значений, извлекаемых из хранилища атрибутов языка SQL.
Отправлять утверждения на основе значений, извлекаемых из хранилища атрибутов протокола LDAP с помощью настраиваемого фильтра LDAP.
Отправлять утверждения на основе значений, извлекаемых из настраиваемого хранилища атрибутов.
Отправлять утверждения только в том случае, если имеется не менее двух входящих утверждений.
Отправка утверждения только в том случае, если значение входящего утверждения соответствует сложному шаблону.
Отправлять утверждения со сложными изменениями значения входящего утверждения.
Создавать утверждения для использования только в последующих правилах, без фактической отправки этих утверждений.
Строить исходящее утверждение на основе содержимого нескольких входящих утверждений.
Вы также можете использовать настраиваемое правило, когда значение исходящего утверждения должно строиться на значении входящего утверждения, но с дополнительным содержимым.
Язык правил для утверждений основывается на правилах. Он имеет часть условий и выполняемую часть. Используя синтаксис языка правил для утверждений, вы можете перечислять, добавлять, удалять или изменять утверждения в соответствии с потребностями вашей организации. Дополнительные сведения о том, как работает каждая из этих частей, см. в разделе "Роль языка правила утверждения".
В следующих разделах содержатся основные сведения о правилах утверждений. В них также говорится о том, когда следует использовать настраиваемые правила для утверждений.
Общие сведения о правилах утверждения
Правило для утверждения представляет экземпляр бизнес-логики, который принимает входящее утверждение, применяет к нему условие (если X, то Y) и создает исходящее утверждения на основе параметров условия.
Внимание
- В оснастке управления AD FS правила утверждений можно создавать только с помощью шаблонов правил утверждений.
- Правила утверждений обрабатывают входящие утверждения непосредственно от поставщика утверждений (например, Active Directory или другой службы федерации) или из выходных данных правил преобразования принятия для отношения доверия с поставщиком утверждений.
- Правила утверждений обрабатываются подсистемой выдачи утверждений в хронологическом порядке в пределах заданного набора правил. Установив приоритет правил, можно дополнительно уточнять или фильтровать утверждения, созданные предыдущими правилами в данном наборе правил.
- Шаблоны правил для утверждений всегда требуют указывать тип входящего утверждения. Однако вы можете обрабатывать несколько значений утверждений с одним типом утверждения, используя одно правило.
Дополнительные сведения о правилах утверждений и наборах правил утверждений см. в разделе "Роль правил утверждений". Дополнительные сведения о том, как обрабатываются правила, см. в разделе "Роль обработчика утверждений". Дополнительные сведения об обработке наборов правил утверждений см. в разделе "Роль конвейера утверждений".
Создание правила
Вы создадите это правило, сначала создав синтаксис, необходимый для вашей операции с помощью языка правила утверждения, а затем вставив результат в текстовое поле, предоставленное в шаблоне "Отправить утверждения с помощью пользовательского правила" для свойств доверия поставщика утверждений или доверия проверяющей стороны в оснастке управления AD FS.
Этот шаблон правил предоставляет следующие возможности.
указание имени правила утверждения;
Введите одно или несколько необязательных условий и инструкцию выдачи с помощью языка правила утверждения AD FS
Дополнительные инструкции по созданию настраиваемого правила с помощью этого шаблона см. в разделе "Создание правила для отправки утверждений с помощью настраиваемого правила " в руководстве по развертыванию AD FS.
Для лучшего понимания принципов работы языка правил для утверждений просмотрите синтаксис языка правил для утверждений в других правилах, которые уже существуют в оснастке, перейдя на вкладку Просмотр языка правил в окне свойств для этого правила. Используя сведения данного раздела и информацию о синтаксисе на этой вкладке, можно глубже понять процесс создания собственных настраиваемых правил.
Дополнительные сведения об использовании языка правил утверждений см. в разделе "Роль языка правил утверждений".
С помощью языка правил утверждений
Пример. Объединение имен и фамилий на основе значений атрибута имени пользователя
Следующий синтаксис правила объединяет имена и фамилии из значений атрибутов в указанном хранилище атрибутов. Обработчик политик формируют декартово произведение совпадений для каждого условия. Например, выходные данные для имени {"Frank", "Alan"} и фамилии {"Миллер", "Шен"} — {"Фрэнк Миллер", "Фрэнк Миллер", "Фрэнк Шен", "Алан Миллер", "Alan Shen"}:
c1:[type == "http://exampleschema/firstname" ]
&& c2:[type == "http://exampleschema/lastname",]
=> issue(type = "http://exampleschema/name", value = c1.value + " " + c2.value);
Пример. Выдача утверждения о руководителе на основе наличия у пользователей подчиненных
Следующее правило выдает утверждение о руководителе только в том случае, если пользователь имеет подчиненных.
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");
Пример. Выдача утверждения PPID на основе атрибута LDAP
Следующее правило выдает утверждение с частным личным идентификатором (PPID) на основе пользовательских атрибутов windowsaccountname и originalissuer в хранилище атрибутов 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);
Ниже перечислены общие атрибуты, которые могут использоваться для идентификации пользователя для данного запроса.
идентификатор безопасности пользователя
windowsaccountname
Samaccountname