提供授权方 arn 的无服务器功能 returns 401
Serverless function with authorizer arn provided returns 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}
在客户端,我希望同一用户池的登录用户能够得到预期的响应。然而它 returns 401.
感谢任何帮助。谢谢
经过绝望的时间,我想出了解决方案。
对于遇到相同问题的任何人,这里有一个对我有用的解决方案。
- 在
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}
- 发送
Authorization
header,发送请求时Auth.currentSession()的值idToken.jwtToken。
下面是使用 @aws-amplify/api
的 API
和 @aws-amplify/auth
的 Auth
发送 header 的示例。
const currentSession = await Auth.currentSession()
await API.post(
'your-endpoint-name',
"/your-endpoint-path/..",
{
headers: {
'Authorization': currentSession.idToken.jwtToken
}
}
)
我正在使用无服务器。
当我在客户端设置我的以下功能之一时,其中包括授权方,我收到 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}
在客户端,我希望同一用户池的登录用户能够得到预期的响应。然而它 returns 401.
感谢任何帮助。谢谢
经过绝望的时间,我想出了解决方案。
对于遇到相同问题的任何人,这里有一个对我有用的解决方案。
- 在
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}
- 发送
Authorization
header,发送请求时Auth.currentSession()的值idToken.jwtToken。
下面是使用 @aws-amplify/api
的 API
和 @aws-amplify/auth
的 Auth
发送 header 的示例。
const currentSession = await Auth.currentSession()
await API.post(
'your-endpoint-name',
"/your-endpoint-path/..",
{
headers: {
'Authorization': currentSession.idToken.jwtToken
}
}
)