我正在AWS EKS的kubernetes容器中提供面向外部的REST GET API服务。我已经为此服务配置了ALB入口,以强制执行Cognito用户池身份验证。 Cognito已配置Authorization code grant
,并且启用了openid
OAuth范围。
如果从浏览器调用REST API,则会重定向到Cognito登录页面。在此处对表单进行成功身份验证之后,我可以很好地访问我的REST GET API。这行得通,但这不是我想要实现的。
相反,在成功通过身份验证之后,我需要使用Bearer
令牌。因此,首先我使用Postman的请求调用https://cognito-idp.ap-southeast-1.amazonaws.com:
"AuthParameters" : {
"USERNAME" : "<email>",
"PASSWORD" : "<mypass>",
"SECRET_HASH" : "<correctly calculated hash>"
},
"AuthFlow" : "USER_PASSWORD_AUTH",
"ClientId" : "<cognito user pool id>"
}
我得到一个成功的答复,如:
"AuthenticationResult": {
"AccessToken": "...",
"ExpiresIn": 3600,
"IdToken": "...",
"RefreshToken": "...",
"TokenType": "Bearer"
},
"ChallengeParameters": {}
}
在最后一步中,我试图调用我的REST API服务,并通过Authorization
HTTP头传递值Bearer <AccessToken>
,但在登录页面时仍会收到HTML响应。
如何配置Cognito接受此呼叫的我的Bearer令牌作为已验证身份?
答案 0 :(得分:0)
在以下主题上引用AWS支持:“不能使用Bearer令牌代替会话cookie,因为在涉及Bearer令牌的流程中会导致生成会话cookie”。
不幸的是,这个用例至今无法实现。