【问题标题】:Symfony2 rest api security configuration (Trying to understand)Symfony2 rest api 安全配置(试图理解)
【发布时间】:2015-04-30 10:58:35
【问题描述】:

我正在使用 Symfony2(FOSRestBundle、FOSOauthBundle、JMSBundle)开发一个 rest api,但我不明白(也找不到)我应该如何设置我的 angularjs 应用程序来访问我的 api 资源。我对安全部分有点困惑并且有很多问题。

1- 我准备了 oauth 客户端。由于暴露了角度代码,我很确定我不能在代码中添加我的秘密和客户端 ID 以进行身份​​验证,所以我是堆栈。 H

2- 我在尝试访问资源时遇到 (No 'Access-Control-Allow-Origin') 错误。我怎样才能简单地允许我的应用程序访问资源(CORS!nelmio/cors-bundle?)但是我对我的应用程序的 oauth 和 CORS 授权的角色感到困惑。

任何帮助将不胜感激。 谢谢

【问题讨论】:

  • CORS 不是身份验证的功能 - 这只是放松同源策略的一种方式。所以不要让这让你感到困惑——CORS 和 OAuth 正在做不同的、相互排斥的事情。 en.wikipedia.org/wiki/Same-origin_policy

标签: angularjs api rest symfony oauth


【解决方案1】:
  1. 您可以公开。这不是完全授权。它只是客户端身份验证,而不是用户。

  2. NelmioCorsBundle 是一个不错的选择。你需要这样的配置:

    nelmio_cors:
        defaults:
            allow_credentials: false
            allow_origin: []
            allow_headers: []
            allow_methods: []
            expose_headers: []
            max_age: 0
            hosts: []
        paths:
            '^/':
                allow_origin: ['*']
                allow_headers: ['origin', 'x-requested-with', 'content-type', 'authorization']
                allow_methods: ['POST', 'PUT', 'GET', 'DELETE', 'OPTIONS']
                max_age: 0
    

allow_origin,你应该把它设置为my.frontend.domain.com。例如,这将为您的 AngularJS 前端打开您的 API。如果您将 API 构建为服务(对所有人开放),则比对所有来源“*”开放。

CORS 不是授权。把它当作防火墙。比你还需要授权 (OAuth)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 2015-09-08
    • 2014-04-23
    相关资源
    最近更新 更多