Symfony2アプリケーション用にREST apiを開発しました。このapiはモバイルアプリで使用されます。機能の多くは、現在認証されているユーザーのコンテキストで実行されます。
$this->container->get('security.context')->getToken()->getUser()
モバイルアプリが従来のウェブフォームと同じようにログインアクションに投稿できるようになることを願っています。資格情報がチェックアウトされると、Symfony2はそれを実行し、Cookieを設定します(これは、APIにアクセスするモバイルアプリのコンテキストでも機能しますか?)。その後、その携帯電話からのapiリクエストは、(うまくいけば)ネイティブのsymfony2security.contextサービスコンテナで機能します。
これは機能しますか? APIをモバイル開発者に提供する前に、この承認プロセスを理解する必要があります。可能であれば、xAuthなどを使用するAPIの新しい認証システムを構築する代わりに、ネイティブのsecurity.contextサービスを使用できるようにしたいと思います。
ありがとう
ステートレス(Cookieなし)で実行する必要があると思います。
私は同じ問題を抱えていました、私がしたこと:
security: ... ファイアウォール: rest_webservice: パターン:/ webservice/rest /.* ステートレス: true http_basic: プロバイダー: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
はい、マーク、ジュールはhttp_basicで認証をテストする方法を示すためだけに例を示しています。
RESTfulであるためには、Cookieの使用を避ける必要があります。それ以外の場合は、単にAPIと呼びます。認証システムの安全性については、https経由でhttp_digestを使用するか、api_key/api_secretアプローチを使用してより安全な署名付きリクエストを使用できます。
こちらをご覧ください http://wiki.zanox.com/en/RESTful_API_authentication