2013-08-28 42 views
0

我正在创建一个网站(与其他网站)共享相同的Active Directory以验证用户(SSO)的网站。ZF2设置LDAP SSO

我已经管理到我的用户进行身份验证...

$auth = new \Zend\Authentication\AuthenticationService(); 

    $options = array(
     'server' => array(
      'host' => $host, 
      'baseDn' => $dc 
     ), 
    ); 

    $adapter = new \Zend\Authentication\Adapter\Ldap($options, $username, $password); 
    $result = $auth->authenticate($adapter); 

...但我只是不明白如何检查,如果用户(从网络中的其他网站)已经auth'ed或者我需要保留会话(或标题?),以便其他站点知道用户已经登录。

谢谢!

回答

1

如果已经为您所使用的组织创建了多站点SSO的规定,则需要类似oauth的包装其目录服务,并以浏览器友好的方式处理SSO。我已经看到SSO为web应用程序完成非oauth方式,但它一直依赖共享一个公共根域的站点,因此共享cookie范围。

底线:域之间的SSO通常不是Zend \ Authentication或LDAP的内置功能。

FWIW,我以前为自定义企业SSO方案构建了一个自定义Zend \ Authentication适配器,并且它很简单。你只需要实现非常简单的界面。

也FWIW,如果他们已经有SSO,我们目前正在实施类似的东西,通过建立一个自定义oauth2提供程序包装客户的目录服务。在权衡了选项之后,我们将以https://github.com/bshaffer/oauth2-server-php作为核心库。 (注意:小心你注册的是什么,因为建立和拥有oauth2提供者是不平凡的)