0

我正在创建一个在共享相同 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);

...但我只是不明白如何检查用户是否已经通过身份验证(来自网络中的另一个站点)或者我需要在会话中保留什么(或标题?)以便其他站点知道用户已经登录。

谢谢!

4

1 回答 1

1

如果您正在使用的组织已经为多站点 SSO 创建了规定,则需要像 oauth 这样的东西,它包装了他们的目录服务并以浏览器友好的方式处理 SSO。我也见过网络应用程序的 SSO 以非 oauth 方式完成,但它始终依赖于共享公共根域的站点,因此具有共享的 cookie 范围。

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

FWIW,我之前为自定义企业 SSO 方案构建了自定义 Zend\Authentication 适配器,这很容易。您只需要实现非常简单的接口。

FWIW,如果他们还没有SSO,我们目前正在实施类似的东西,通过构建一个定制的 oauth2 提供程序来包装客户的目录服务。在权衡选项之后,我们将使用https://github.com/bshaffer/oauth2-server-php作为核心库。(注意:要小心您注册的内容,因为构建和拥有 oauth2 提供程序并非易事)

于 2013-08-31T11:16:29.673 回答