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}',
);

Аз съм доста нов в Single Sign on. Също така скрих 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 Можете да зададете baseurl в конфигурационния файл да започва с https. Обикновено ще се опита да открие дали използвате HTTPS или не, но това може да се провали, например ако сте зад обратен прокси. Най-добре е да зададете изрично baseurl. - person jornane; 12.05.2017
comment
@jornane Виждам благодаря, но има ли начин да направите това, като запазите този baseurlpath относителен? Според коментара над това свойство, ако включите протокола https, имате нужда и от името на хоста/fqdn. В моя случай моето приложение може да бъде достъпно от повече от един 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, за да запазим get и post променливите, започна да работи добре.

Благодаря, Anubhav

person Anubhav    schedule 06.05.2016