我已經在代理資源的API網關中配置了自定義授權,但我的要求是免除授權的少數API,但我不想在API網關中配置新的API,因爲我試圖通過API設計代理網關。如何免除某些資源在AWS API網關中的自定義授權?
例如,API /server/ver1.0/rest/{proxy+},這是我在API網關中配置的REST API,它通過自定義授權程序,然後如果成功則調用後端http服務。
但我想免除授權的API - /server/ver1.0/rest/acc/reg。
我已經在代理資源的API網關中配置了自定義授權,但我的要求是免除授權的少數API,但我不想在API網關中配置新的API,因爲我試圖通過API設計代理網關。如何免除某些資源在AWS API網關中的自定義授權?
例如,API /server/ver1.0/rest/{proxy+},這是我在API網關中配置的REST API,它通過自定義授權程序,然後如果成功則調用後端http服務。
但我想免除授權的API - /server/ver1.0/rest/acc/reg。
假設自定義授權者是一個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
}
最後,我已經解決了問題,我在我的問題描述的相同方式,
由於有沒辦法,AWS提供任何編程的方法忽略特定的條件下,我們留下了以下選項:
創建一個單獨的API - 通過這種方式,AWS將給予優先 更具體的API比一般的一個即,API /server/ver1.0/rest/acc/reg
將給予優先 /server/ver1.0/rest/{proxy+} 2)
修改自定義授權拉姆達 功能檢查每一個URL模式,但是這使得拉姆達 定製認證非常複雜,維護性較差。
我已經通過了第一個選項,因爲它更清潔和更容易維護,而且我不想褻瀆我拉姆達定製的授權與各種URL模式
感謝mailtobash,目前我已經使用一個單獨的api-gateway中的API並在方法請求配置中禁用授權人,但理想的解決方案是在運行時爲特定的Url禁用自定義授權人,但似乎AWS api-gateway目前不支持它。 –