Сбой, когда Simplesamlphp находится за балансировщиком нагрузки

Мы используем simplesamlphp в качестве поставщика услуг. Мы интегрировались с рядом Idp. Все работает нормально.

Теперь мы хотим изменить архитектуру нашего сервера на load balancer -> webserver -> database server. Проблема возникает, когда мы ставим load balancer перед webserver. IDP получает ошибку.

load balancer завершает https, и я считаю, что проблема возникает. Таким образом, когда load balancer отправляет запрос webserver, это обычный запрос http.

Когда я регистрирую начальные события, я получаю

Я собираюсь немного упростить xml и поместить части, которые были другими

с load balancer

Session: 'idp-name' not valid because we are not authenticated.
Saved state: '_somelongstringofnumbersandletters'
Sending SAML 2 AuthnRequest to '{{their info}}'
Sending message:
    <samlp:AuthnRequest ... AssertionConsumerServiceURL="http://{{our-info}}">
        <saml:Issuer>http://{{our-info}}</saml:Issuer>
        <samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" AllowCreate="true"/>
    </samlp:AuthnRequest>

Таким образом, выше единственные части, которые отличаются между указанием на load balancer и webserver, это http и https соответственно.

Не был уверен, есть ли способ заставить simplesamlphp просто вернуть https. Или он всегда будет проверять текущее состояние запроса и принимать http.

Просто чтобы убедиться, что я даю все данные. Процесс инициируется SP. Поэтому они просто переходят по URL-адресу типа https://oursite.com/idp-name. И мы всегда используем https.

Дайте мне знать, если мне нужно что-то уточнить.

ОБНОВИТЬ

Мы решили эту проблему, НЕ завершая HTTPS-запрос в балансировщике нагрузки и позволяя запросу проходить на серверы. Таким образом, наши SSL-сертификаты находятся непосредственно на наших веб-серверах, а не на балансировщике нагрузки.

Я не мог заставить решение работать, но это может быть только моя вина. Нам нужно было быстрое решение, и проще всего было не расшифровывать SSL на балансировщике нагрузки.


person James    schedule 26.12.2015    source источник
comment
Ваша проблема решилась? Я столкнулся с подобной проблемой, было бы здорово, если бы вы могли обновить то решение, которое сработало для вас. Спасибо!!   -  person wanjarisushil    schedule 26.05.2017
comment
@wanjarisushil Я обновил вопрос. Хотя не уверен, что это поможет.   -  person James    schedule 26.05.2017


Ответы (1)


Джеймс!

Я полагаю, что вы используете балансировщик нагрузки в качестве обратного прокси-сервера, поэтому убедитесь, что в вашем config/config.php phpsimplesaml вы установили правильные переменные, особенно обратите внимание на baseurlpath.

$config = array(

/**
 * Setup the following parameters to match the directory of your installation.
 * See the user manual for more details.
 *
 * Valid format for baseurlpath is:
 * [(http|https)://(hostname|fqdn)[:port]]/[path/to/simplesaml/]
 * (note that it must end with a '/')
 *
 * The full url format is useful if your simpleSAMLphp setup is hosted behind
 * a reverse proxy. In that case you can specify the external url here.
 *
 * Please note that simpleSAMLphp will then redirect all queries to the
 * external url, no matter where you come from (direct access or via the
 * reverse proxy).
 */
'baseurlpath' => 'https://sso.yourcompanyname.com/simplesaml/',
... 

...

Также убедитесь, что ответ, который возвращается к SP, возвращает правильный протокол ( https )

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

person Artjoman    schedule 29.12.2015