Мы разрабатываем веб-приложение, которое предлагает несколько механизмов входа, таких как 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:
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 удалены, так как мы решили проблему
Дикая догадка для этой «странной вещи»: возможно, когда вы изменили тип правила претензии, требование, которое было выдано для сопоставления с NameId, было отфильтровано, из-за которого было отменено имя. – Thuan
Спасибо, это хорошая идея. Я буду учитывать это во время отладки. :) – hlpinform