CakePHP 2.1 - Como uma aplicação web e serviço REST com autenticação

Atualmente estou desenvolvendo uma aplicação CakePHP que atualmente possui autenticação de formulário. Eu também gostaria de abrir este aplicativo para outros aplicativos para se conectar via REST.

Eu sei que o CakePHP seria capaz de fazer isso usando o

Router::mapResources() 

e

Router::parseExtensions() 

No entanto, não sei como fazer isso funcionar, digamos, autenticação básica ou Digest HTTP.

Eu tenho o seguinte no AppController.php

public $components = array(
    'Session',
    'Auth' => array(
        'authenticate' => array(
            'Form'
        ),
        'loginAction' => array(
            'admin' => false,
            'controller' => 'users',
            'action' => 'login'
        ),
        'loginRedirect' => array(
            'controller' => 'users',
            'action' => 'home'
        )
    )
);

Se para o campo de autenticação, eu tinha em 'Basic' por exemplo - ao entrar na versão web, recebi uma caixa de autenticação HTTP e não o formulário baseado na web.

Qual a melhor maneira para fazer isto? A única maneira que posso pensar no momento é criar um ApiController separado e fazer autenticação manualmente?

Qualquer conselho seria incrível.

Atualizar:

Este é o meu código revisado que está me dando o comportamento correto - tenho certeza que deve haver uma maneira melhor de fazer isso.

class AppController extends Controller {

    public $components = array(
        'Session',
        'RequestHandler',
        'Auth' => array(
            'loginAction' => array(
                'admin' => false,
                'controller' => 'users',
                'action' => 'login'
            ),
            'loginRedirect' => array(
                'controller' => 'users',
                'action' => 'home'
            )
        )
    );

    public $helpers = array('Html', 'Form', 'Session');

    public function beforeFilter() {
        $header = $_SERVER['HTTP_AUTHORIZATION'];
        if($header) {
            $this->Auth->authenticate = array('Basic');
        }
    }

}

questionAnswers(2)

yourAnswerToTheQuestion