У меня есть AD FS, требует настроенного поставщика и Шибболет SP, успешно проходящий проверку подлинности против него. Когда я вхожу в сайт, это защищено Шибболетом, индекс показывает все заголовки. Я получаю UPN как ожидалось, но я не могу заставить другие атрибуты как фамилия или sAMAccountName отправлять.
У меня в настоящее время есть 3 правила требований:
Правило 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 выше был произволен.
Чтобы проверить, работает ли ваше правило "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"). Это создаст новую опцию в выпадающем меню, более простую в использовании.
.