我成功地部署了一个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网关中,您可以设置一个引用Cognito User Pool进行身份验证的Cognito Authorizer。为了进行验证,API Gateway期望在Authorization头中设置Cognito User Pool JWT令牌。 使用'aws-sdk‘和’amazon-cognito identity-js‘NPM包,我如何创建来宾/未经身份验证的用户并检索JWT令牌以传递到API网关?所谓访客/未认证,我的意思是甚至没有用户名或电子邮件。或者,这在当前的API中是不可能的吗? Amplify (构建在Cognito之上)似乎有类似的东西:https://docs.a
我在Angular中有一个单页应用程序,一个带有Lambda的API网关用于后端服务,Cognito用户池用于身份验证和授权。
对某些API终结点的访问取决于用户角色。您可以使用(执行API invoke for the Api Gateway资源)策略将IAM角色附加到组。
但是,在调用API之前,使用Cognito作为API Gateway的Authorizer仅检查用户是否经过了身份验证(通过在Authorization头中传递ID令牌,在成功登录后,此令牌将从Cognito用户池返回)。用户所在的组不会被用来检查它所在的组以及它所拥有的IAM权限。
有没有一个好的方法,授权我的web用
我使用以下AWS技术构建了一个无服务器应用程序:
白兰地
拉姆达
AWS API网关
AWS IAM
来自客户端的所有请求(用Angular2编程)都要通过API网关。
我已经为用户签名创建了一个IAM角色:Cognito_MyApp_Auth。我使用一个Cognito User Pool Authorizer来确保对我的API的所有调用都来自有效的登录用户。
问题:如何授予Lambda函数与已签名用户相同的权限?
用例:在用户中签名的A只能在自己的S3桶中创建、编辑或删除,因此授予S3完全权限不是一种选择。
我有一个API网关HTTP API。对于一些路由,我已经附加了Cognito User Pool authorizer,它工作得很好。但是,现在我想对授权添加一个限制,以便只有具有正确用户名的用户才能访问某个API。 例如,如果路由是PUT /users/{username},我只希望具有相应用户名的用户能够编辑他/她的配置文件信息。对于其他用户,它应该是未经授权的。 这似乎是一个常见的用例,我该怎么做呢?我研究过作用域,但这似乎不是解决方案。我是否必须为此编写一个自定义的Lambda授权程序,而不是使用Cognito授权程序?如果是这样,你能提供一个例子,因为我没有编写Lambda授权器的
我很难将来自请求授权头的特定JWT授权声明信息发送到API网关REST端点(与非代理Lambda集成)。端点的安全使用认知用户池授权器,登录用户以Amazon作为身份提供程序。从API网关的Cloudwatch执行日志中,我可以看到JWT授权程序声明:
(***) Cognito User Pool Authorizer claims from JWT: {
at_hash=***,
sub=***,
cognito:groups=us-east-1_***_LoginWithAmazon,
email_verified=false,
iss=https
我正在尝试使用AWS建立一个非常基本的基础设施,它包括
科尼图用户池
羔羊
授权器
具有根和子路径的API和几种方法
以认知用户池为授权器的路径
问题:我不知道如何正确创建Authorizer,所以它被API GW所接受
合并CF模板很好,但是在部署期间我得到了以下错误:
Invalid authorizer ID specified. Setting the authorization type to CUSTOM or COGNITO_USER_POOLS requires a valid authorizer.
因此,即使在部署过程中将授权程序本身的创建标记为
我有一个Lambda函数,它绑定到API网关,我试图从传递给Lambda函数的事件或上下文对象中获取路径和阶段。
AWS控制台生成的映射模板如下:
## See http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html
## This template will pass through all parameters including path, querystring, header, stage variables, and conte
我正在尝试使用内置的登录对话框与AWS Chalice集成认知。这就是我试过的:
# This passes in correct arn for my pool, not xxxx
authorizer = CognitoUserPoolAuthorizer(
'end_users_dev', provider_arns=['arn:aws:cognito-idp:us-west-2:xxxx])
@app.route('/test', cors=True, authorizer=authorizer)
def test():
ret
我在我的API中使用了cognito,并使用serverless来配置api。为了给函数添加一个自动生成器,我找到了这个代码(How to configure my Serverless YML to use my API Gateway Authorizer?): teste:
handler: handler.teste
memorySize: 128
events:
- http:
path: teste
method: get
authorizer:
name: api-authorizer
我正在尝试在aws api网关后面提供对服务的不同访问,让我们简单地将其分为两个用户组user-a和user-b,每个用户组都可以访问/routeA或/routeB,但不能访问其他用户组。
用户身份验证是通过定义了2个用户组的Cognito用户池进行的。前端是React和Amplify。
在尝试了几种方法后,我对此进行了反复尝试。运行此决策树时,会指向使用Cognito AuthZ,这本身就很好,因为我正在使用Cognito for AuthN。
到目前为止,还没有任何示例/教程/文章/视频演示如何在启用其他用户的同时阻止某些用户。我试过了:
Cognito user Pool Authori
我正在尝试集成API v2 HTTP API与遗留(有效负载版本1.0)自定义lambda授权器。它能够调用自定义的lambda授权器,但在网关日志中获得低于响应($context.authorizer.error),状态为500 ($context.authorizer.status https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-logging-variables.html)- The response from the Lambda Authorizer function doesn't