Предоставление кода авторизации в лямбда-AWS с Serverless Framework - PullRequest
0 голосов
/ 07 декабря 2018

Я разрабатываю лямбда-сервис с Serverless Framework, который отвечает за вход в Cognito.

const aws_cognito = require('amazon-cognito-identity-js');

const authDetails = new aws_cognito.AuthenticationDetails({
    Username: usuario,
    Password: password
});

const poolData = {
    UserPoolId: XXXXXXXX,
    ClientId: XXXXXXX
};

const userPool = new aws_cognito.CognitoUserPool(poolData);

const userData = {
    Username: usuario,
    Pool: userPool
};

const cognitoUser = new aws_cognito.CognitoUser(userData);

cognitoUser.authenticateUser(authDetails, {
    onSuccess: () => {
        console.log('OK');
    },
    onFailure: (err) => {
        console.log(err);
    }
});

По деловым причинам мне нужно смоделировать пользовательский интерфейс, который генерирует Cognito.Система должна поддерживать потоки OAUTH: «Предоставление кода авторизации» и «Неявное предоставление».

«Неявное предоставление» работает без проблем, но я не могу получить код авторизации для «Предоставление кода авторизации».Есть ли способ получить код авторизации с помощью AWS SDK?

Спасибо!

1 Ответ

0 голосов
/ 15 декабря 2018

Я понимаю, что вы можете реализовать "неявный поток" без использования размещенного пользовательского интерфейса, но вы хотите знать, как реализовать "поток предоставления авторизации".

Вы можете использовать любой клиент HTTPв вашем веб-приложении для отправки HTTP-запросов к конечным точкам Cognito Auth для прохождения потока предоставления кода.Это конечные точки API REST, а также SDK для выполнения операции не требуется.

Пожалуйста, ознакомьтесь с приведенными ниже шагами, чтобы понять ход процесса с использованием вызовов API:

1)Сделайте GET-запрос к конечной точке AUTHORIZATION для получения токенов XSRF [1].Вам нужно будет передать необходимые параметры при выполнении этого запроса.Обязательные параметры: response_type (код или токен), client_id и redirect_uri.В соответствии с вашим вариантом использования, поскольку вы используете «Поток предоставления авторизации», вам нужно установить значение response_type в значение «code».Как только вы сделаете этот запрос, вы получите токен XSRF в ответе в виде файла cookie.Этот токен XSRF понадобится на следующем шаге.

2) Сделайте POST-запрос к конечной точке LOGIN для получения токенов [2].Вам необходимо передать те же обязательные параметры, которые указаны при выполнении запроса АВТОРИЗАЦИЯ.Наряду с необходимыми параметрами вы можете передать параметры тела POST: токен CSRF, имя пользователя и пароль.Как только мы сделаем этот запрос, вы сможете получить токены в ответе.Он также предоставляет Cookie в ответе, который можно использовать позже, чтобы сделать запрос на обновление токенов.

3) Сделайте POST-запрос к конечной точке TOKEN для получения токенов обновления [3].Нам нужно передать необходимые параметры при оформлении запроса.Обязательные параметры запроса - grant_type и client_id.Как только вы сделаете успешный запрос, вы получите новый набор токенов в ответе.

============

Ссылки:

[1] Конечная точка авторизации: http://docs.aws.amazon.com/cognito/latest/developerguide/authorization-endpoint.html

[2] Конечная точка входа в систему: http://docs.aws.amazon.com/cognito/latest/developerguide/login-endpoint.html

[3] Конечная точка токена: http://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...