我已经设法通过带有OpenAPI定义的yaml SAM模板部署了一个具有不同路由和lambda集成的AWS HTTP API,但我坚持向我的路由添加自定义lambda授权器。当我部署堆栈时,API创建超时了: ROLLBACK_IN_PROGRESS AWS::CloudFormation::Stack CloudArYer The following resource(s) failed to
我正在尝试使用AWS建立一个非常基本的基础设施,它包括
科尼图用户池
羔羊
授权器
具有根和子路径的API和几种方法
以认知用户池为授权器的路径
问题:我不知道如何正确创建Authorizer,所以它被API GW所接受
合并CF模板很好,但是在部署期间我得到了以下错误:
Invalid authorizer ID specified. Setting the authorization type to CUSTOM or COGNITO_USER_POOLS requires a valid authorizer.
因此,即使在部署过程中将授权程序本身的创建标记为
我在Angular中有一个单页应用程序,一个带有Lambda的API网关用于后端服务,Cognito用户池用于身份验证和授权。
对某些API终结点的访问取决于用户角色。您可以使用(执行API invoke for the Api Gateway资源)策略将IAM角色附加到组。
但是,在调用API之前,使用Cognito作为API Gateway的Authorizer仅检查用户是否经过了身份验证(通过在Authorization头中传递ID令牌,在成功登录后,此令牌将从Cognito用户池返回)。用户所在的组不会被用来检查它所在的组以及它所拥有的IAM权限。
有没有一个好的方法,授权我的web用
我正在配置一个具有各种前端(移动和web应用程序)和单个API后端的应用程序,该应用程序由Lambda提供支持,并通过AWS API Gateway访问。
由于我计划使用Cognito对用户进行身份验证和授权,因此我已经在我的API Gateway上设置了一个Cognito User Pool authorizer和几个API方法。
有了这样的架构,从OAuth的角度来看,我的应用程序(例如iOS或Vue.js应用程序)是客户端应用程序,而我的API Gateway后端是资源服务器,这似乎是合乎逻辑的。基于,似乎很明显,我应该在客户端应用程序中使用ID令牌,并传递访问令牌来授权我的API Ga
我制作了一个自定义的lambda授权器,用于验证JWT并返回Allow策略。 var context = new APIGatewayCustomAuthorizerContextOutput();
var tokenUse = ExtractClaims(claims, "token_use");
context["tokenType"] = tokenUse;
var response = new APIGatewayCustomAuthorizerResponse
{
PrincipalID = "asd",
我成功地部署了一个Cognito User Pool,并使用它对我在API网关中设置为API代理的方法进行了身份验证,现在我正在创建同一堆栈的Cloudformation模板。使用Cloudformation,我设置了API网关和使用我的用户池的Authorizer。工作正常。当我尝试部署一个使用Authorizer的方法时,它失败了,原因是:
Invalid authorizer ID specified. Setting the authorization type to CUSTOM
or COGNITO_USER_POOLS requires a valid authorizer.
这
我为API网关终结点创建了两个Authorizers。一个使用console手动创建,另一个使用boto3创建。手动创建的应用程序运行良好,但是使用脚本创建的应用程序会在主题行中出现错误。如果你检查这两个授权器的内容,它们是相同的。
缺失的部分可以是什么?我不认为这是对lambda的无效权限,因为当手动配置时,它在一个授权器上工作。
The code for the same is as below:
response = client.create_authorizer(
restApiId=apiid,
name=authNa
比方说,我可以访问自定义授权程序中的某个值,如何将它传递给api端点--到目前为止,我所读到的是,我们可以使用策略生成器中的上下文来完成这个任务。就像这样-
authResponse.context = {
"key": "this is the data sent from custom authorizer",
"numKey": 1,
"mysql":"sdf"
};
但此代码在策略生成器中,而不是在自定义授权程序中。那么,如何访问在自定义授权程序中获得的值并将其