2016-09-28 3 views
3

Мы разрабатываем веб-приложение, которое предлагает несколько механизмов входа, таких как LDAP, Kerberos, SAP Logon Ticket, а также SAML.Проблема с SSO между SAML SP и ADFS IdP

Для этого мы используем Spring Security Framework, который работает (в основном) фантастическим!

Несколько месяцев назад мы добавили поддержку SAML в наше приложение и протестировали его с помощью внешнего IdP (SSOcircle). Мы также тесно сотрудничали с генеральным директором SSOcircle, чтобы мы начали работать.

Все работало отлично, и мы думали, что можем зарегистрировать SAML с нашим первым клиентом в реальной жизни.

Итак, мы установили тестовый сервер (SP) на машине linux и сконфигурировали нашу часть (мы использовали этот документ: http://docs.spring.io/spring-security-saml/docs/current/reference/html/chapter-idp-guide.html) и ждали, когда наш клиент сделает свою часть.

Но когда они пытались использовать SSO в нашем приложении (они используют ADFS), мы столкнулись с проблемой.

Потому что прямо сейчас мы получаем одно из двух сообщений об ошибках. Либо запрос это один

Ошибка аутентификации: org.springframework.security.core.userdetails.UsernameNotFoundException: Пустое имя пользователя не допускается!

или это один

Ошибка org.opensaml.common.SAMLException проверки SAML сообщение: NameID элемент должен присутствовать как часть объекта в сообщении ответа , пожалуйста включите его в IDP конфигурация

Во время устранения неполадок я наткнулся на эти другие потоки здесь, на StackOverflow:

SAMLException: NameID element must be present as part of the Subject in the Response message, please enable it in the IDP configuration

Configuring ADFS 3.0/SAML 2.0 to work with Spring Security for SSO integration

NameID element must be present as part of the Subject

Странно то, что сообщение второй ошибки (относительно NameID) элемент появляется только если мы изменим службу федерации Active Directory правила претензии от «Исходящего типа претензии» к " Pass Through type ".

Прямо сейчас, я понятия не имею, где продолжить поиск неисправностей. Любые идеи или мысли по этому вопросу?

С наилучшими пожеланиями Рене

edit1: Я attatched ссылку на отладочный лог-файл и наш конфиг безопасности SAML

EDIT2: Знает ли кто-нибудь, если есть способ указать часовой пояс, который SAML должен использовать? Прямо сейчас, время Зулу, похоже, используется в часовом поясе, хотя наша ОС настроена на использование CET/CEST. Поэтому нам пришлось использовать параметры responseSkew для входа/выхода из системы.

EDIT3: Debug & Config удалены, так как мы решили проблему

+0

Дикая догадка для этой «странной вещи»: возможно, когда вы изменили тип правила претензии, требование, которое было выдано для сопоставления с NameId, было отфильтровано, из-за которого было отменено имя. – Thuan

+0

Спасибо, это хорошая идея. Я буду учитывать это во время отладки. :) – hlpinform

ответ

2

О'кей, мы решили эту проблему.

Во время живой отладки мы заметили, что NameID был не отправить как SAML утверждение атрибута пары ключей/значение, а как «автономный» ключ/значение пары в утверждение «заголовок» SAML.

Итак, мы изменили наш код, чтобы охватить как возможные позиции в утверждении SAML, так и теперь он работает отлично. : D

Смежные вопросы