2009-08-20 78 views
0

我有一个基于CakePHP构建的Web应用程序。目前它正在使用内置的AuthComponent和ACL功能进行用户认证/访问控制。CakePHP和Kerberos

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

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

任何意见,将不胜感激。

回答

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; 
    } 
} 
+0

我打算执行此操作。 我还发现了PECL :: PAM模块,我认为它将很好地用于认证位。 – jeffluckett 2009-08-27 16:32:48