簡體   English   中英

如何在Symfony2的兩個不同防火牆下保護API

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM