CakePHP и Kerberos - PullRequest
       20

CakePHP и Kerberos

0 голосов
/ 20 августа 2009

У меня есть веб-приложение, построенное на CakePHP. В настоящее время он выполняет аутентификацию пользователя / контроль доступа со встроенным AuthComponent и функцией ACL.

Во всей нашей организации у нас МНОЖЕСТВО приложений (веб-и других), для каждого из которых требуется собственная комбинация «пользователь / пароль». Наша компания планирует перевести как можно больше наших внутренних приложений на функцию «единого входа», и мы надеемся использовать Kerberos для центрального пользовательского магазина.

Мне интересно, если бы кто-то мог напасть на это, изменив AuthComponent для проверки в базе данных уровня приложения пользователей, которым разрешено использовать само приложение, но затем связаться с Kerberos (при условии, что пользователь найден) для аутентификации пользователя uname / pwd combo.

Любой совет будет оценен.

1 Ответ

1 голос
/ 21 августа 2009

Вы можете создать новый Компонент, который расширяет оригинальный 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;
    }
}
...