我创建的网站在网络(与其他网站)一起工作,共享同一个Active Directory以对用户进行身份验证(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);
...但我不知道如何检查用户是否已经过身份验证(来自网络中的其他网站)或者我需要在会话中保留什么(或标题?)以便其他网站知道用户已经登录。
谢谢!
答案 0 :(得分:1)
如果您正在使用的组织已经创建了多站点SSO,则需要oauth,包装他们的目录服务并在浏览器友好的情况下处理SSO办法。我已经看到网络应用程序的SSO也采用非oauth方式,但它始终依赖于共享公共根域的站点,因此具有共享cookie范围。
底线:域之间的SSO通常不是Zend \ Authentication或LDAP的内置功能。</ p>
FWIW,我之前已经为自定义企业SSO方案构建了一个自定义Zend \ Authentication适配器,这很简单。你只需要实现非常简单的界面。
另外FWIW,如果他们不已经有SSO,我们目前正在实现类似的东西,通过构建一个自定义的oauth2提供程序来包装客户的目录服务。在权衡选项之后,我们将https://github.com/bshaffer/oauth2-server-php作为核心库。 (注意:请注意您注册的内容,因为建立和拥有oauth2提供商并非易事)