[英]How to protect APIs under two different firewalls on Symfony2
我目前正在Symfony2.1上开发一套新的Restfull API,目前它们在我的security.yml中没有防火墙。
api:
pattern: ^/api
security: false
我有一个RequestListener
,通过检查用户是否提供Auth令牌或使用基本Auth来“保护”它们。 正确登录后,我们用用户填充安全上下文。 (也许我们甚至可以使用Factory对其进行防火墙?)
这对于希望在其应用程序中使用我们的API的外部开发人员/组织来说非常理想。
现在,我希望我们在项目中依赖这些相同的API(控制器,ajax调用..),我想知道现在是否必须自己实现API令牌或基本身份验证流程来填充安全性上下文。 API,或者是否可以以某种方式神奇地检索主防火墙的当前安全上下文。 (这将使我免于获得令牌,将其保存在某个地方并通过我的Backbonejs ajax调用它的尴尬)。
感谢您对此的想法! :)
首先,对于基本身份验证,您可以依靠Symfony2提供的http_basic
身份验证提供程序 。 无需使用请求侦听器。 如果要使用基于令牌的身份验证,请编写令牌身份验证提供程序 。
安全上下文是分开的,您不能与其他上下文进行交互。 它们是完全分区的。 但是,您可以根据需要添加任意数量的身份验证提供程序。
使用Backbone.js,您可以保留基于令牌的策略。 例如,使用HTML属性将令牌传递给Backbone:
<body data-token="xxxx">
...
</body>
然后,只需在您的JavaScript应用中使用它即可:
$.ajaxSetup({
headers: {
'token': $('body').data('token')
}
});
有关更多信息,请参见$ .ajaxSetup文档 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.