2017-10-08 111 views
0

我已經在代理資源的API網關中配置了自定義授權,但我的要求是免除授權的少數API,但我不想在API網關中配置新的API,因爲我試圖通過API設計代理網關。如何免除某些資源在AWS API網關中的自定義授權?

例如,API /server/ver1.0/rest/{proxy+},這是我在API網關中配置的REST API,它通過自定義授權程序,然後如果成功則調用後端http服務。

但我想免除授權的API - /server/ver1.0/rest/acc/reg。

回答

1

假設自定義授權者是一個lambda函數,這意味着您的API網關是與Lambda的代理集成 - 您可以在lambda函數中執行此操作。

根據您所請求的資源,如: /ACC/REG - 你可以在lambda函數和旁路認證檢測這一點。 對於所有其他資源,您可以通過自定義授權過程。

你可以定義變量來存儲您的安全VS不安全的資源,匹配那些反對該請求

var insecureApis = '/hello,/acc/reg'; 
var secureApis = '/account/me'; 

var path = event.path; 

if(secureApis.includes(path)){ 
    //perform custom auth and proxy request 
} else { 
    // just proxy 
} 
+0

感謝mailtobash,目前我已經使用一個單獨的api-gateway中的API並在方法請求配置中禁用授權人,但理想的解決方案是在運行時爲特定的Url禁用自定義授權人,但似乎AWS api-gateway目前不支持它。 –

1

最後,我已經解決了問題,我在我的問題描述的相同方式,

由於有沒辦法,AWS提供任何編程的方法忽略特定的條件下,我們留下了以下選項:

  1. 創建一個單獨的API - 通過這種方式,AWS將給予優先 更具體的API比一般的一個即,API /server/ver1.0/rest/acc/reg將給予優先 /server/ver1.0/rest/{proxy+} 2)

  2. 修改自定義授權拉姆達 功能檢查每一個URL模式,但是這使得拉姆達 定製認證非常複雜,維護性較差。

我已經通過了第一個選項,因爲它更清潔和更容易維護,而且我不想褻瀆我拉姆達定製的授權與各種URL模式