提供授权方 arn 的无服务器函数返回 401



我正在使用无服务器。

当我在客户端上按如下方式设置我的函数之一(包括授权方)时,我会收到 401。

但是当我删除它时,没有问题。

provider:
name: aws
runtime: nodejs8.10
region: eu-west-1
environment:
USER_POOL_ARN: "arn:aws:cognito-idp:eu-west-1:974280.....:userpool/eu-west-1........"
functions:
create:
handler: handlers/create.main
events:
- http:
path: create
method: post
cors: true
authorizer:
type: COGNITO_USER_POOLS
name: serviceBAuthFunc
arn: ${self:provider.environment.USER_POOL_ARN}

在客户端上,我希望同一用户池的登录用户可以获得预期的响应。但是,它返回 401。

任何帮助,不胜感激。谢谢。

经过绝望的时间,我想出了解决方案。

对于遇到相同问题的任何人,这是一个对我有用的解决方案。


  1. cors: true后添加integration: lambda(尽管顺序无关紧要)。

下面只是演示一下。

functions:
create:
handler: handlers/create.main
events:
- http:
path: create
method: post
cors: true
integration: lambda   // this solves the problem
authorizer:
type: COGNITO_USER_POOLS
name: serviceBAuthFunc
arn: ${self:provider.environment.USER_POOL_ARN}

  1. 发送Authorization标头,其值为 Auth.currentSession().idToken.jwtToken。

下面是使用@aws-amplify/apiAPI@aws-amplify/authAuth发送标头的示例。

const currentSession = await Auth.currentSession() 
await API.post(
'your-endpoint-name', 
"/your-endpoint-path/..",
{
headers: {
'Authorization': currentSession.idToken.jwtToken
}
}
)

相关内容

  • 没有找到相关文章

最新更新