К сожалению, в официальном SDK для aws такой метод недоступен. После долгих исследований мне пришлось написать собственное промежуточное программное обеспечение для этого. Это не так сложно, как может показаться, но единственная сложная часть - собрать правильную информацию из огромной AWS документации.
Я написал это промежуточное ПО для достижения того же, надеюсь, это поможет
import axios from 'axios'
import awsconfig from '../../aws-exports';
const COGNITO_URL = `https://cognito-idp.${awsconfig.aws_project_region}.amazonaws.com/`;
const authentication = async (req, res, next) => {
try {
const accessToken = req.headers.authorization.split(" ")[1];
const { data } = await axios.post(
COGNITO_URL,
{
AccessToken: accessToken
},
{
headers: {
"Content-Type": "application/x-amz-json-1.1",
"X-Amz-Target": "AWSCognitoIdentityProviderService.GetUser"
}
}
)
req.user = data;
next();
} catch (error) {
return res.status(401).json({
message: 'Auth failed'
});
}
};
export default authentication;
Это промежуточное ПО берет заголовок авторизации и проверяет входящий accessToken, используя AWS Cognito REST API.
Чтобы получить accessToken на своем внешнем интерфейсе, вы можете сделать что-то вроде этого:
const { accessToken: { jwtToken } } = await Auth.currentSession();
Этот jwtToken
является вашим accessToken, вы можете отправить его в заголовок Authorization
и затем проверить это в бэкэнде, используя написанное мной промежуточное ПО.