如何免除某些资源在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
}
答
最后,我已经解决了问题,我在我的问题描述的相同方式,
由于有没办法,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目前不支持它。 –