如何免除某些资源在AWS API网关中的自定义授权?

问题描述:

我已经在代理资源的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 
} 
+0

感谢mailtobash,目前我已经使用一个单独的api-gateway中的API并在方法请求配置中禁用授权人,但理想的解决方案是在运行时为特定的Url禁用自定义授权人,但似乎AWS api-gateway目前不支持它。 –

最后,我已经解决了问题,我在我的问题描述的相同方式,

由于有没办法,AWS提供任何编程的方法忽略特定的条件下,我们留下了以下选项:

  1. 创建一个单独的API - 通过这种方式,AWS将给予优先 更具体的API比一般的一个即,API /server/ver1.0/rest/acc/reg将给予优先 /server/ver1.0/rest/{proxy+} 2)

  2. 修改自定义授权拉姆达 功能检查每一个URL模式,但是这使得拉姆达 定制认证非常复杂,维护性较差。

我已经通过了第一个选项,因为它更清洁和更容易维护,而且我不想*我拉姆达定制的授权与各种URL模式