AD FS - отправляет AD атрибуты в шибболет SP

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

У меня в настоящее время есть 3 правила требований: Claims rules

Правило 1:

Правило 2:

Правило 3:

От входа в систему Шибболет машина 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

Нет никакого упоминания, подобного вышеупомянутому выводу о фамилии или sn в журнале shibd, который заставляет меня полагать, что "Преобразовывают SN' правило, не записан правильно.


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

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

Я добавляю поля такой streetAddress. Для Правила 1 я вручную ввел в streetaddress для атрибута 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:

Я забыл добавлять результат выбора Языка Правила Представления (согласно просьбе Matthieu ниже):

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 потому что, если оператор ищет 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");

Вместо того, чтобы искать Тип == схема, я просто поместил конкретный адрес. Затем в Шибболете SP, я изменил Attribute-map.xml для добавления этого:

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

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

4
задан 25 June 2015 в 02:50
1 ответ

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

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

Edit: на экране #1, в нижней части окна, что вы увидите, когда нажмете кнопку "View Rule Language"? Вы вручную набирали "sn" в поле "Тип исходящей претензии" справа?

Edit 2: то, что вы набираете в поле, это именно то, что используется в качестве типа претензии. Если Вы набираете "foo", то типом пункта формулы является "foo". Если вместо этого нужно напечатать "http://foo", то нужно напечатать "http://foo". Если вам нужен длинный тип пункта формулы, вместо того, чтобы вводить все в поле, создайте новое описание пункта (перейдите по дереву слева, "AD FS" -> "Service" -> "Claim Descriptions"). Это создаст новую опцию в выпадающем меню, более простую в использовании.

.
2
ответ дан 3 December 2019 в 03:56

Теги

Похожие вопросы