[英]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.