Назад | Перейти на главную страницу

AD FS - отправка атрибутов AD в Shibboleth SP

У меня установлен поставщик утверждений AD FS, и Shibboleth SP успешно выполняет аутентификацию по нему. Когда я вхожу на сайт, защищенный Shibboleth, в индексе отображаются все заголовки. Я получаю UPN, как ожидалось, но не могу получить другие атрибуты, такие как фамилия или sAMAccountName, для отправки.

В настоящее время у меня есть 3 правила претензий:

Правило 1:

Правило 2:

Правило 3:

Из журналов на машине Shibboleth SP не видно, что sn отправляется как атрибут OID.

Если я отредактирую attribute-map.xml и удалю ссылки на eppn, то в журнале shibd я получу следующее:

2015-06-23 11:29:08 INFO Shibboleth.AttributeExtractor.XML [1]: skipping unmapped SAML 2.0 Attribute with Name: urn:oid:1.3.6.1.4.1.5923.1.1.1.6

В журнале shibd нет упоминания, аналогичного приведенному выше, о фамилии или sn, что заставляет меня полагать, что правило «Transform SN» написано неправильно.


ОБНОВЛЕННАЯ ИНФОРМАЦИЯ:

Мне удалось заставить работать фамилию, изменив правило 1, вводя вручную sn для выбора раскрывающегося списка surname. Что мне нужно сделать, чтобы другие поля AD отображались без раскрывающегося списка для работы?

Я добавляю поля такие streetAddress. Для правила 1 я вручную ввел уличный адрес для атрибута LDAP и типа исходящего утверждения.

Затем я добавил дополнительное правило:

c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress"]
 => issue(Type = "urn:oid:2.5.4.232", Value = c.Value, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename"] = "urn:oasis:names:tc:SAML:2.0:attrname-format:uri");

Я не знаю http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress правильно или нет, но значение не отображается.
Как заставить работать атрибуты LDAP, которые нельзя выбрать в раскрывающемся списке?


Изменить 2:

Я забыл добавить результат выбора View Rule Language (как просил Матье ниже):

c:[Type == "http://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/upn", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname", "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", "streetaddress"), query = ";userPrincipalName,sn,givenName,sAMAccountName,streetaddress;{0}", param = c.Value);

Кажется, это только становится streetaddress, в то время как все остальные значения имеют схему. Поскольку схемы нет, она не будет соответствовать правилу преобразования для streetaddress потому что оператор if ищет http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress. Что мне делать со значениями, которые не выбраны из раскрывающегося списка?


Я понял:

Я изменил правило преобразования на следующее:

 c:[Type == "streetaddress"]
     => issue(Type = "urn:oid:2.5.4.232", Value = c.Value, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename"] = "urn:oasis:names:tc:SAML:2.0:attrname-format:uri");

Вместо того, чтобы искать схему Type == A, я просто указываю почтовый адрес. Затем в Shibboleth SP я изменил Attribute-map.xml, чтобы добавить следующее:

<Attribute name="urn:oid:2.5.4.232" id="streetaddress"/>

OID выше был произвольным.

Чтобы проверить, работает ли ваше правило "Transform SN" должным образом, установите Скрипач. Затем установите этот инспектор так легче читать сообщения SAML.

С помощью этих инструментов вы сможете увидеть, что отправляется с вашего сервера ADFS на Shibboleth SP. Тогда вы узнаете, на какой стороне ошибка конфигурации.

Изменить: что вы видите на экране №1 в нижней части окна, когда нажимаете кнопку «Просмотр языка правил»? Вы вручную ввели «sn» в поле «Тип исходящей заявки» справа?

Изменить 2: то, что вы вводите в поле, - это именно то, что используется в качестве типа утверждения. Если вы наберете «foo», то ваше утверждение будет «foo». Если вы хотите "http: // foo"вместо этого вы должны ввести"http: // foo". Если вам нужен длинный тип утверждения, вместо того, чтобы вводить все в поле, создайте новое описание утверждения (перейдите в дереве слева," AD FS "->" Служба "->" Описания утверждений "). Это создаст новая опция в раскрывающемся списке, более простая в использовании.