symfony2 rest api具有独立的客户端和最终用户安全性

时间:2014-02-05 16:09:41

标签: api security rest symfony oauth-2.0

我正在symfony2上构建一个REST API,我不确定什么是管理不同安全级别的最佳方法。

  • 未经身份验证的客户(​​无权访问API数据的应用或网站)无法从API获取(获取,发送,发布等)数据
  • 经过身份验证的客户端将能够从API请求一些数据,但不能请求与用户相关的数据。
  • 另一方面,最终用户需要以某种方式登录才能从API访问某些私有资源。

例如,api/v1/philosophies会将所有的phylosophies列出到经过身份验证的客户端。未注册的最终用户可以看到列表:“理想主义,现实主义,存在主义,......”。 但最终用户需要获得授权(注册和登录)才能通过api/v1/user/{userID}/favorites访问他们喜爱的哲学家。

我一直在使用FOSUserBundle,FOSRestBundle和FOSOAuthServerBundle阅读和测试内容,但我找到的所有信息都是用户总是登录以获取令牌,整个api受到客户端和用户的保护。

有什么想法吗?

有些轻松吗?

请?

1 个答案:

答案 0 :(得分:1)

FOSRest和FOSAuth可以很好地满足您的需求,看起来您需要更改security.yml中定义访问的方式。您始终必须登录才能访问资源的唯一原因是资源受到保护。如果您有一个要允许匿名访问的资源,那么在security.yml中创建该条目,如下所示:

security:
    access_control:
        - { path: ^/api/v1/pilosophies$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api/v1, roles: IS_AUTHENTICATED_FULLY }

这样可以在不登录的情况下访问/api/v1/pilosophies,但所有其他资源仍然会受到保护。您可以在文档Securing specific url patterns

中详细了解相关信息

最后,您决定哪些资源受到保护。 FOSOAuth与该决定无关。