Rails omniauth-saml + разработка + проблема с ADFS

Я пытаюсь интегрировать наш логин ADFS с нашим приложением, которое использует ActiveAdmin в сочетании с Devise. Я успешно добавил omniauth-saml для этой цели. Приложение теперь перенаправляется в ADFS, вход выполняется успешно, но затем происходит сбой при обратном вызове. Я получаю сообщение об ошибке Invalid ticket.

Когда я пытаюсь посмотреть ответ на сервере в omniauth-saml lib, я вижу, что он говорит: @document=<UNDEFINED> ... </> и @decrypted_document=<UNDEFINED> ... </>

initializers/devise.rb гласит:

config.omniauth :saml,
                assertion_consumer_service_url: 'https://my_server/admin/auth/saml/callback',
                issuer: 'https://my_server/',
                authn_context: 'urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport',
                idp_sso_target_url: 'https://my_adfs_server/adfs/ls/',
                assertion_consumer_service_binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
                assertion_consumer_logout_service_binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
                idp_sso_target_url_runtime_params: {original_request_param: :mapped_idp_param},
                name_identifier_format: 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
                idp_cert: idp_certificate,
                request_attributes: {},
                attribute_statements: {email: ['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'],
                                       name: ['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'],
                                       first_name: ['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname'],
                                       last_name: ['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname']},
                private_key: sp_key,
                certificate: sp_certificate,
                security: {authn_requests_signed: true,
                           logout_requests_signed: true,
                           logout_responses_signed: true,
                           metadata_signed: true,
                           digest_method: XMLSecurity::Document::SHA1,
                           signature_method: XMLSecurity::Document::RSA_SHA1,
                           embed_sign: false}

Как я могу это решить?

Дополнение: похоже, что REXML::Document не может расшифровать шифр внутри ответа SAML. Это не удается сделать без ошибок. Когда я пытаюсь сделать это самостоятельно, используя https://www.samltool.com/decrypt.php Хотя я не вижу в этом проблем.


person Michael Sommer    schedule 20.06.2016    source источник


Ответы (1)


Я выбрал неправильный сертификат из метаданных ADFS xml. Нужно выбрать подпись, а не сертификат шифрования.

Обнаружил это с помощью https://www.samltool.com/validate_response.php для отладки.

person Michael Sommer    schedule 21.06.2016
comment
Как я в итоге это исправил, можно найти в моем блоге: michaelsommer.nl/2016/06/ - person Michael Sommer; 27.06.2016