Я пытаюсь аутентифицировать пользователей через OneLogin в Schwab Compliance Technologies.
Когда пользователи входят в систему с панели управления OneLogin, они аутентифицируются нормально. Когда я использую приведенный ниже код для аутентификации их с нашего сайта intr anet, пользователь переходит на страницу входа в Schwab CT, но получает эту ошибку:
Сбой аутентификации с использованием единого входа. Пожалуйста, проверьте имя пользователя и / или токен.
Это код, который я использую для генерации запроса:
user = view_context.current_user
request = OneLogin::RubySaml::Authrequest.new
settings = OneLogin::RubySaml::Settings.new
settings.idp_entity_id = "https://#{ONELOGIN_HOST}/saml/metadata/#{ONELOGIN_APP_UUID}"
settings.idp_sso_target_url = "https://#{ONELOGIN_HOST}/trust/saml2/http-post/sso/#{ONELOGIN_APP_UUID}"
settings.idp_slo_target_url = "https://#{ONELOGIN_HOST}/trust/saml2/http-redirect/slo/#{ONELOGIN_APP_UUID}"
settings.idp_cert_fingerprint = ONELOGIN_APP_FINGERPRINT
settings.idp_cert_fingerprint_algorithm = XMLSecurity::Document::SHA1
settings.name_identifier_value_requested = user.email
settings.name_identifier_format = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
settings.security[:digest_method] = XMLSecurity::Document::SHA1
settings.security[:signature_method] = XMLSecurity::Document::RSA_SHA1
redirect_to(request.create(settings))
Есть ли какой-нибудь способ запретить OneLogin добавить атрибуты InResponseTo
? Должен ли <ds:SignatureValue>
соответствовать успешному запросу? Нужно ли что-то еще сделать для решения этой проблемы?
РЕДАКТИРОВАТЬ: Я наконец-то услышал от Schwab CT и ошибка, которую они видят, заключается в том, что значение InResponseTo
является недействительным:
org.opensaml.common.SAMLException: InResponseToField ответа не соответствует отправленному сообщению _06d42e96-fbc0-4e97-87c3-4d35c558ee8b
Есть что-то, что нужно добавить в мой код, чтобы заставить OneLogin сгенерировать правильное значение для InResponseTo
?