繁体   English   中英

Symfony2 api 的身份验证(用于移动应用程序)

[英]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)。

我有同样的问题,我做了什么:

  • 在您的 app/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());
    }
}

您在这里, 如何创建自定义身份验证提供程序很棒的文章。

要通过 api 对 Symfony2 应用程序进行身份验证,您需要使用: WS-Security

是的,Marc,jules 指的是一个示例,只是为了向您展示如何使用 http_basic 测试身份验证。

要成为 RESTful,您应该避免使用 cookies,否则只需将其称为 API。 关于您的身份验证系统的安全性,您可以使用 http_digest go 通过 https 或更安全的签名请求使用 api_key/api_secret 方法。

看看这里http://wiki.zanox.com/en/RESTful_API_authentication

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM