2009-08-20 11 views
0

Ich habe eine Web-App auf CakePHP gebaut. Gegenwärtig macht es Benutzerauthentifizierung/Zugriffskontrolle mit der eingebauten AuthComponent und der ACL-Funktionalität.CakePHP und Kerberos

In unserer gesamten Organisation haben wir viele Anwendungen (Web und andere), die alle ihre eigene Benutzer/Pass-Kombination benötigen. Unser Unternehmen möchte so viele unserer internen Apps in die Single-Sign-On-Funktionalität migrieren, und wir hoffen, Kerberos für den zentralen Benutzerspeicher zu verwenden.

Ich frage mich, ob jemand dies angegriffen haben könnte, indem die AuthComponent geändert wurde, um eine Datenbank auf Anwendungsebene von Benutzern zu validieren, die App selbst verwenden dürfen, aber dann mit Kerberos kommunizieren (vorausgesetzt, der Benutzer gefunden wird), um den Benutzer zu authentifizieren uname/pwd-Kombination.

Jeder Rat würde geschätzt werden.

Antwort

1

Sie können eine neue Komponente erstellen, die die ursprüngliche AuthComponent erweitert. Dann überschreiben Sie die Login-Methode und fügen dort Ihre weitere Authentifizierung hinzu. Diese Lösung ist sehr praktisch und nicht zu aufdringlich, auch wenn die AuthComponent nicht so ausgelegt ist.

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

Ich werde dies implementieren. Ich habe auch das PECL :: PAM-Modul gefunden, was meiner Meinung nach für das Authentifizierungsbit gut ist. – jeffluckett