Аутентификация для api Symfony2 (для мобильных приложений)
Я разработал REST api для моего приложения Symfony2. Этот api будет использоваться мобильным приложением. Большая часть функций выполняется в контексте текущего аутентифицированного пользователя, т. е.:
$this->container->get('security.context')->getToken()->getUser()
Я надеюсь, что мобильное приложение сможет опубликовать действие входа в систему так же, как традиционная веб-форма. Если учетные данные проверяются, то Symfony2 делает это и устанавливает cookie (это даже работает в контексте мобильного приложения, обращающегося к api?). Затем позже api запросы с этого мобильного телефона (надеюсь) будут работать с родной безопасностью symfony2.контейнер контекстной службы.
будет ли это работать? Мне нужно выяснить этот процесс авторизации, прежде чем я возьму API для мобильных разработчиков. Если возможно, я, очевидно, хотел бы иметь возможность использовать собственную безопасность.контекстная служба вместо создания новой системы аутентификации для api, которая использует xAuth или что-то подобное.
спасибо
3 ответов
Я думаю, что вы должны сделать это без гражданства (без печенья).
у меня была та же проблема, что и у меня:
- в вашем приложении / config / security.yml, добавить:
security: ... firewalls: rest_webservice: pattern: /webservice/rest/.* stateless: true http_basic: provider: provider_name ...
- теперь вы можете сделать запрос на свой веб-сервис:
class AuthTest extends WebTestCase
{
public function testAuthenticatedWithWebservice()
{
$client = $this->createClient();
// not authenticated
$client->request('GET', '/webservice/rest/url');
$this->assertEquals(401, $client->getResponse()->getStatusCode());
// authenticated
$client->request('GET', '/webservice/rest/url', array(), array(), array(
'PHP_AUTH_USER' => 'username',
'PHP_AUTH_PW' => 'password'
));
$this->assertEquals(200, $client->getResponse()->getStatusCode());
}
}
вот вы, Как создать пользовательский поставщик проверки подлинности потрясающая статья.
для аутентификации в приложении Symfony2 через api вам нужно использовать: WS-Security
да Марк, Жюль указывает на пример, чтобы показать вам, как тестировать аутентификацию с помощью http_basic.
чтобы быть спокойным, вы должны избегать использования cookies, иначе просто назовите его API. О том, насколько безопасна ваша система аутентификации, вы можете пойти с http_digest через https или более безопасный подписанный запрос с подходом api_key/api_secret.
посмотрите здесь http://wiki.zanox.com/en/RESTful_API_authentication