WSO2 IS 5.9 выход из системы: нет установленных сеансов, соответствующих индексам сеансов - PullRequest
0 голосов
/ 25 марта 2020

Настройка информации: WSO2 Identiy версия сервера: 5.9. Я использую WSO2 IS для добавления единого входа в мой PHP проект. Я создал поставщика услуг единого входа SAML для PHP SAML в wso2. Поставщик услуг: Эмитент: https://ssowebapp.domain.net/demo1/metadata.php URL-адрес получателя подтверждения: https://ssowebapp.domain.net/demo1/php-saml-master/index.php?acs Формат Namid: urn: oasis: names: t c: SAML: 1.1: nameid-format: emailAddress Включить выход из системы URL-адрес выхода: https://ssowebapp.domain.net/demo1/php-saml-master/index.php?sls Способ выхода из системы: выход из обратного канала

Это мои настройки. php файл:

< ?php
$spBaseUrl = 'https://ssowebapp.domain.net'; 

    $settingsInfo = array (
        'sp' => array (
            'entityId' => $spBaseUrl.'/demo1/metadata.php',
            'assertionConsumerService' => array (
                'url' => $spBaseUrl.'/php-saml-master/demo1/index.php?acs',
            ),
            'singleLogoutService' => array (
                'url' => $spBaseUrl.'/php-saml-master/demo1/index.php?sls',
                'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
             ),
              'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
         ),
        'idp' => array (
            'entityId' => 'https://wso2.domain.net:9443/samlsso',
            'singleSignOnService' => array (
                'url' => ''https://wso2.domain.net:9443/samlsso',
                'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
                ),
            'singleLogoutService' => array (
                'url' => ''https://wso2.domain.net:9443/samlsso'',
                 'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
            ),
            'x509cert' =>  '-----Certificate-------------'
        ),
    );  

This is my PHP code (index.php) :

 1. 

    <?php 
    session_start(); define("TOOLKIT_PATH",
        '/var/www/html/ssowebapp/php-saml-master/');  
        require_once(TOOLKIT_PATH.'_toolkit_loader.php');  
        require_once(TOOLKIT_PATH.'demo1/settings.php');

        $auth = new OneLogin_Saml2_Auth($settingsInfo); $requestId=null; if
        (isset($_GET['sso'])) {    // SSO action.  Will send an AuthNRequest
        to the IdP
            $auth->login(); } else if (isset($_GET['sso2'])) {              
            $returnTo = $spBaseUrl.'/demo1/attrs.php';  
            $auth->login($returnTo); } else if (isset($_GET['slo'])) {  
            $auth->logout(); } else if (isset($_GET['acs'])) {  
             $auth->processResponse();      
              $_SESSION['samlSessionIndex']         =  $auth->getSessionIndex();
              $_SESSION['samlNameId']               =    $auth->getNameId();
              $_SESSION['samlNameIdFormat']          = $auth->getNameIdFormat();
              $_SESSION['samlNameIdNameQualifier']   =  $auth->getNameIdNameQualifier();
              $_SESSION['samlNameIdSPNameQualifier'] = $auth->getNameIdSPNameQualifier();
               $_SESSION['LogoutRequestID'] =   $auth->getLastRequestID();
             $errors = $auth->getErrors();  
            if (!empty($errors)) {
                echo '<p>', implode(', ', $errors), '</p>';
            }

        if (!$auth->isAuthenticated()) {      
                echo "<p>Not authenticated</p>";  
                exit();
            }
            $_SESSION['samlUserdata'] = $auth->getAttributes(); 
            if (isset($_POST['RelayState']) && OneLogin_Saml2_Utils::getSelfURL() != $_POST['RelayState']) {
                $auth->redirectTo($_POST['RelayState']);  
            }                                              } else if (isset($_GET['sls'])) {       $auth->logout($returnTo, $paramters,
        $nameId, $sessionIndex, false, $nameIdFormat, $nameIdNameQualifier,
        $nameIdSPNameQualifier);

            $errors = $auth->getErrors(); 
            if (empty($errors)) {
                echo '<p>Sucessfully logged out</p>';
            } else {
                echo '<p>', implode(', ', $errors), '</p>';
            } } if (isset($_SESSION['samlUserdata'])) {      
            if (!empty($_SESSION['samlUserdata'])) {
                $attributes = $_SESSION['samlUserdata'];
                 //var_dump($auth->processResponse());
                echo 'You have the following attributes:<br>';
                echo '<table><thead><th>Name</th><th>Values</th></thead><tbody>';
                foreach ($attributes as $attributeName => $attributeValues) {
                    echo '<tr><td>' . htmlentities($attributeName) . '</td><td><ul>';
                    foreach ($attributeValues as $attributeValue) {
                        echo '<li>' . htmlentities($attributeValue) . '</li>';
                    }
                    echo '</ul></td></tr>';
                }
                echo '</tbody></table>';
            } else {                             // If there is not user data, we notify
                echo "<p>You don't have any attribute</p>";
            }

            echo '<p><a href="?slo" >Logout</a></p>'; // Print some links with possible } else {                                      
            echo '<p><a href="?sso" >Login</a></p>';
            echo '<p><a href="?sso2" >Login and access to attrs.php page</a></p>'; }

Нет проблем во время входа в систему с SSSO. Но выход из системы не работает. У меня есть эта ошибка в WSO2 IS: [2020-03-24 12: 04: 46,385] [https://ssowebapp.domain.net/php-saml-master/demo1/index.php?sls] ОШИБКА {org.wso2.carbon.identity.sso.saml.processors.SPInitLogoutRequestProcessor} - Не установлено установленных сеансов, соответствующих индексам сеансов. [2020-03-24 12: 04: 46,393] [https://ssowebapp.domain.net/php-saml-master/demo1/index.php?sls] WARN {org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet} - перенаправление на страницу выхода по умолчанию из-за неверный запрос на выход

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...