0

CakePHPに基づいて構築されたWebアプリがあります。現在、組み込みの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 に答える