Ошибка необработанного исключения Simplesamlphp при использовании в качестве SP

После успешного получения токена SAML 2.0 при использовании simplesamlphp в качестве поставщика услуг я получаю следующую ошибку.

 Oct 21 17:30:15 simplesamlphp DEBUG [6b6e3c270f] GenerateGroups - attribute 'eduPersonAffiliation' not found.
    Oct 21 17:30:15 simplesamlphp DEBUG [6b6e3c270f] Session: doLogin("default-sp")
    Oct 21 17:30:15 simplesamlphp WARNING [6b6e3c270f] Unable to find the SAML 2 binding used for this request.
    Oct 21 17:30:15 simplesamlphp WARNING [6b6e3c270f] Request method: 'GET'
    Oct 21 17:30:15 simplesamlphp ERROR [6b6e3c270f] SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
    Oct 21 17:30:15 simplesamlphp ERROR [6b6e3c270f] Backtrace:
    Oct 21 17:30:15 simplesamlphp ERROR [6b6e3c270f] 0 /var/www/simplesamlphp/www/module.php:180 (N/A)
    Oct 21 17:30:15 simplesamlphp ERROR [6b6e3c270f] Caused by: Exception: Unable to find the current binding.
    Oct 21 17:30:15 simplesamlphp ERROR [6b6e3c270f] Backtrace:
    Oct 21 17:30:15 simplesamlphp ERROR [6b6e3c270f] 2 /var/www/simplesamlphp/lib/SAML2/Binding.php:95 (SAML2_Binding::getCurrentBinding)
    Oct 21 17:30:15 simplesamlphp ERROR [6b6e3c270f] 1 /var/www/simplesamlphp/modules/saml/www/sp/saml2-acs.php:11 (require)
    Oct 21 17:30:15 simplesamlphp ERROR [6b6e3c270f] 0 /var/www/simplesamlphp/www/module.php:135 (N/A)
    Oct 21 17:30:15 simplesamlphp ERROR [6b6e3c270f] Error report with id bd213fb5 generated.

Мой SP настроен так:

**authsources.php**

    'default-sp' => array(
        'saml:SP',
        'entityID' => NULL,
        'idp' => NULL,
        'discoURL' => NULL,
        'RelayState' => '{link to my application}',
        'acs.Bindings' => array(
            'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
            'urn:oasis:names:tc:SAML:1.0:profiles:browser-post',
        ),
    ),

saml20-idp-remote.php

$metadata['https://{idp entity id}'] = array(
    'metadata-set' => 'saml20-idp-remote',
    'entityid' => 'https://{idp entity id}',
    'name' => array(
        'en' => 'IDP Name',
        'no' => 'IDP name',
    ),
    'description'  => 'IDP desc',
    'SingleSignOnService' => 
      array (
        0 => 
        array (
          'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
          'Location' => '{SSO url}',
        ),
        1 =>
        array(
          'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact',
          'Location' => '{SSO url}',
        ),
      ),
    'SingleLogoutService'  => '{SLO url}',
    'certFingerprint' => '{the fingerprint}',
);

Я новичок в системе единого входа. Я также скрыл URL-адреса для конфиденциальности, но я не уверен, что я что-то упускаю или что вызывает эту ошибку. Если бы кто-нибудь мог помочь указать мне в правильном направлении, это было бы очень признательно. Я также должен упомянуть, что пытаюсь использовать https://drupal.org/project/simplesamlphp_auth для подключения к мое приложение.

Это первый поток IDP. Я использую mysql для хранения сессий.


person user2686172    schedule 23.10.2013    source источник
comment
почему вы установили entityID и idp в NULL? Обычно эта конфигурация не работает и должна выдавать ошибку, отличную от той, которую вы указали.   -  person rsabir    schedule 06.04.2016
comment
Я получал аналогичную ошибку из-за наличия «store.type» => «memcache» вместо phpsession.   -  person Asdrubal    schedule 09.03.2017


Ответы (2)


"Unable to find the current binding." означает именно то, что текущая привязка не может быть определена. В вашем saml20-idp-remote.php упоминается привязка HTTP-POST, а в вашем журнале упоминается Request method: 'GET', так что, возможно, что-то пойдет не так при публикации на https://…/module.php/saml/sp/saml2-acs.php/default-sp.

Я просто делаю дикие предположения, но по моему опыту, наиболее распространенной причиной является перенаправление веб-сервера. Может быть, вы перенаправляете на другое имя хоста? Вы принудительно используете HTTPS? Проверьте на IdP правильность URL-адресов для AssertionConsumerService — они должны вести напрямую к SimpleSamlPhp без какого-либо перенаправления.

person jornane    schedule 03.03.2014
comment
+1 У меня так было. Я сделал конфигурацию в apache для перенаправления всех запросов http на https (прокси), но перенаправление не сохраняет почтовый запрос (тип запроса (POST/GET) + параметры). Поэтому, чтобы обойти эту проблему, я был вынужден активировать https в simplesamlphp. - person rsabir; 06.04.2016
comment
Также есть другое решение для тех, у кого есть такая же проблема: измените постоянное перенаправление в apache2.conf/httpd.conf на перенаправление 307. С этим изменением вам не нужно будет устанавливать https для simplesamlphp. - person rsabir; 06.04.2016
comment
@rsabir Что вы подразумеваете под активацией https в simplesamlphp? Было ли значение конфигурации для включения перенаправления https в simplesamlphp? - person The Unknown Dev; 12.05.2017
comment
@KimberlyW Вы можете установить базовый URL в файле конфигурации, чтобы он начинался с https. Обычно он пытается определить, используете ли вы HTTPS или нет, но это может не сработать, например, если вы находитесь за обратным прокси-сервером. Лучше всего установить baseurl явным образом. - person jornane; 12.05.2017
comment
@jornane Понятно, спасибо, но есть ли способ сделать это, сохранив при этом родственника baseurlpath? Согласно комментарию выше этого свойства, если вы включите протокол https, вам также потребуется имя хоста/полное доменное имя. В моем случае к моему приложению можно получить доступ более чем по одному URL-адресу, поэтому я не могу исправить только один. - person The Unknown Dev; 12.05.2017
comment
@KimberlyW файл конфигурации - это PHP, поэтому вы можете его написать. Опять же, это не форум поддержки, и это становится очень не по теме. Если ваша установка требует особого обращения, вам следует задать отдельный вопрос. - person jornane; 13.05.2017

Я столкнулся с такой же ситуацией.

Сущность saml указывала на www.mysite.com в конфигурации apache, которую мы перенаправляли с www.mysite.com на mysite.com с кодом перенаправления 301, после изменения кода перенаправления 307 для сохранения переменных получения и публикации он начал работать нормально.

Спасибо, Анубхав

person Anubhav    schedule 06.05.2016