0

我有一个基于 CakePHP 的网络应用程序。目前它正在使用内置的 AuthComponent 和 ACL 功能进行用户身份验证/访问控制。

在我们的整个组织中,我们有许多应用程序(Web 和其他)都需要它们自己的用户/通行证组合。我们公司希望将尽可能多的内部应用程序迁移到“单点登录”功能,并希望将 Kerberos 用于中央用户存储。

我想知道是否有人可能通过修改 AuthComponent 来针对允许使用应用程序本身的用户的应用程序级数据库进行验证,然后与 Kerberos 通信(假设找到用户)以验证用户的 uname/pwd 组合来攻击这个.

任何意见,将不胜感激。

4

1 回答 1

1

您可以创建一个扩展原始 AuthComponent 的新组件。然后您覆盖登录方法并在那里添加您的其他身份验证。这个解决方案非常方便,而且不会太侵入,即使 AuthComponent 不是为了这样扩展而设计的。

App::import('Core', 'Auth');
class AuthenticationComponent extends AuthComponent {
    public $components = array('Session', 'RequestHandler', 'Sso');
    public $loginRedirect = array('controller' => 'frontpage');
    public $Controller = null;
    public $loginAction = array('controller' => 'login');
    public $authorize = 'actions';
    public $loginError = Notifications::LOGIN_FAILED;
    public $authError = Notifications::ACTION_NOT_ALLOWED;

    public function login($data) {
        if(parent::login($data)) {
            // OTHER AUTHENTICATION HERE
            return true;
        }
        else {
            // stuff
        }
        return false;
    }
}
于 2009-08-21T10:20:30.243 回答