[英]Authentication for a Symfony2 api (for mobile app use)
我為我的 Symfony2 應用程序開發了 REST api。 此 api 將由移動應用程序使用。 大部分功能是在當前經過身份驗證的用戶的上下文中完成的,即:
$this->container->get('security.context')->getToken()->getUser()
我希望移動應用程序能夠像傳統的 web 表單一樣發布到登錄操作。 如果憑證簽出,那么 Symfony2 會執行此操作並設置一個 cookie(這甚至可以在訪問 api 的移動應用程序的上下文中工作嗎?)。 然后稍后來自該手機的 api 請求將(希望)與本機 symfony2 security.context 服務容器一起使用。
這行得通嗎? 在將 API 帶給移動開發者之前,我需要弄清楚這個授權過程。 如果可能的話,我顯然希望能夠使用本機 security.context 服務,而不是為使用 xAuth 或類似東西的 api 構建新的身份驗證系統。
謝謝
我認為你應該做到無狀態(沒有cookie)。
我有同樣的問題,我做了什么:
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());
}
}
您在這里, 如何創建自定義身份驗證提供程序很棒的文章。
要通過 api 對 Symfony2 應用程序進行身份驗證,您需要使用: WS-Security
是的,Marc,jules 指的是一個示例,只是為了向您展示如何使用 http_basic 測試身份驗證。
要成為 RESTful,您應該避免使用 cookies,否則只需將其稱為 API。 關於您的身份驗證系統的安全性,您可以使用 http_digest go 通過 https 或更安全的簽名請求使用 api_key/api_secret 方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.