Symfony2 REST API与分开的客户端和最终用户安全性



我在Symfony2上构建REST API,我不确定是管理不同安全级别的最佳方法。

  • 未经验证的客户端(无权访问API数据的应用程序或网站)无法从API
  • 获得(获取,放置,发布等)数据
  • 已验证的客户端将能够从API中请求某些数据,但与用户相关的数据无关。
  • 另一方面,最终用户需要以某种方式登录以访问API的某些私人资源。

例如,api/v1/philosophies会将所有系统粒细胞列为身份验证的客户端。未注册的最终用户可以看到列表:"唯心主义,现实主义,存在主义,……"。但是最终用户需要获得授权(注册和记录)才能通过api/v1/user/{userID}/favorites访问他们喜欢的系统粒细胞。

我一直在阅读和测试FosuserBundle,FosrestBundle和FosoAuthServerVerverBundle,但是我发现的所有信息都始终将用户记录在以获取令牌,以获取令牌,并且整个API都受到客户端和用户的保护。

有什么想法吗?

有些光?

请?

fosrest和fosauth可以按照您的需求正常工作,看起来您需要更改在security.yml中定义访问的方式。您始终必须登录以访问资源的唯一原因是资源受到保护。如果您有要允许匿名访问的资源,请在Security.ym中进行该条目,类似的内容:

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

这将使/api/v1/pilosophies无需登录即可访问,但是所有其他资源仍然会受到保护。您可以在确保特定URL模式的文档中阅读有关此信息的更多信息

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

最新更新