我正在使用SSOCircle用Codeigniter测试我的SAML实现。当前步骤是:

  • 访问website.com
  • 重定向到SSOCircle同意页
  • 验证身份
  • 将用户数据传递回website.com

  • 但是,在步骤3之后,它会转到步骤4,然后立即返回到步骤3。

    这是我的代码:
    public function index()
        {
            $data['languages']= get_all_languages();
            $sp_auth = 'default-sp';
            try {
                $auth = new SimpleSAML_Auth_Simple($sp_auth);
                $auth->requireAuth(array(
                'ReturnTo' => $this->data['controller'],
                'KeepPost' => FALSE,
                ));
                $attributes = $auth->getAttributes();
                var_dump($attributes);
            } catch (Error $e) {
                print_r($e);
            }
        }
    

    我认为我的重定向可能是它不断调用同意页面的原因。但是,当添加另一个URL以便使用此功能进行访问时
    public function auth(){
            $attributes = $auth->getAttributes();
            var_dump($attributes);
    }
    

    我收到此错误:
    SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
    
    Backtrace:
    1 www/_include.php:45 (SimpleSAML_exception_handler)
    0 [builtin] (N/A)
    Caused by: SimpleSAML_Error_Exception: No authentication source with id 'Login/Auth' found.
    Backtrace:
    2 lib/SimpleSAML/Auth/Source.php:335 (SimpleSAML_Auth_Source::getById)
    1 modules/saml/www/sp/saml2-acs.php:12 (require)
    0 www/module.php:135 (N/A)
    

    更新

    我最近注意到SSOCircle实际上返回了我的登录页面。但是,它立即将其重定向回SSOCircle页面。不确定这是否有帮助

    空值
    重新导向
    您已重定向到:https://idp.ssocircle.com:443/sso/SSORedirect/metaAlias/publicidp?SAMLRequest=vVPBjtowEP2VyPfghCQqWIDELqoWabeLCO1hLytjD4ulxHY9k6X8fZ2kVbc9cOzJ0vO8N%2B%2FN2AuUbePFuqOz3cP3DpCSH21jUQwXS9YFK5xEg8LKFlCQEvX66VFMJ5nwwZFTrmEfKLcZEhECGWdZst0s2WtWgNafINe5UlrqY1lJmE1BlvOimkN10mVWZZDn85wl3yBgZC5ZFIp0xA62FklailCWz9KsSPP8kM1EVYqqeGHJJqYxVtLAOhN5FJwb7SeITpmgGpgo14qyLHhEeF0%2F70GbAIp4CyTXjZHIfXdsjIoslqx%2Fu793FrsWQg3h3Sj4un%2F8o6%2FhfRJdBe0UpjgWYN%2BH7x%2FuniCoLly59D6KDs44nU3Qr14GunI0rW%2BgnyO%2FXC68dbqLJv3Z8wHD8ZymUuGAajjJrqEUo7vdr23cGauNfbu9iONYhOLhcNilu%2Bf6wFaLXlsMgw2r%2FxSnn7OWJP9Js%2BAfvSzGR%2Folpthudi62uiafXWgl3Q7ZI0anp6FUUJAWDViKi2wad7kPIAmWjEIHjK%2FGln9%2FhdVP&RelayState=https%3A%2F%2Fwww.website.com%2Fapp

    更新2

    我刚刚查看了日志,并且收到了此警告
    Mar 12 23:26:26 simplesamlphp WARNING [da20d4a7a3] Could not load state specified by InResponseTo: NOSTATE Processing response as unsolicited.
    

    有人告诉我,这是因为丢失了状态信息。但是,我已经检查了我的cookie名称,并且它们匹配。我还错过了什么?

    https://github.com/simplesamlphp/simplesamlphp/wiki/State-Information-Lost

    最佳答案

    更新:
    后面的段落假定,在修改代码以避免Cyclique重定向时,您必须确保:

    Configure the authentication module:**



    然后,由于处理simpleSAMLphp和codeIgniter之间的 session 冲突而发生No authentication source with id错误。

    解决方案1:更改SimpleSAMLphp以使用其他 session 存储方法

    解决方案是将simpleSAMLphp设置为使用除phpsession之外的其他东西,因为Memcached存在问题,最好的方法是将其设置为“sql”。您可以在simplesamlphp/config/config.php中执行以下操作:

    /*
     * Configure the datastore for simpleSAMLphp.
     *
     * - 'phpsession': Limited datastore, which uses the PHP session.
     * - 'memcache': Key-value datastore, based on memcache.
     * - 'sql': SQL datastore, using PDO.
     *
     * The default datastore is 'phpsession'.
     *
     * (This option replaces the old 'session.handler'-option.)
     */
    'store.type'                    => 'sql',
    

    解决方案2:更改 session 设置以匹配应用程序和SimpleSAMLphp:

    如果决定使 session 设置匹配,则应在php.ini中更改设置。这是为了确保这些设置适用于使用默认设置的所有内容。 php.ini中的以下选项必须与应用程序使用的设置匹配:



    请查看the docs了解更多信息

    如果仍然不能解决问题,那么作为最后的手段:try disabling varnish caching

    资料来源:
    https://github.com/zl4bv/CakePHP-simpleSAMLphp-Plugin/issues/7
    https://www.drupal.org/project/simplesamlphp_auth

    关于php - SSOCircle不断重定向到“同意”页面SAML2.0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49205356/

    10-11 17:42