как получить триггер предварительной аутентификации AWS для несуществующего пользователя - PullRequest
0 голосов
/ 02 мая 2019

Когда несуществующий пользователь пытается войти в cognito, он устанавливает заголовки ответа:

x-amzn-errormessage: User does not exist 
x-amzn-errortype: UserNotFoundException:

Это проблема безопасности, потому что безопасный ответ будет выглядеть как incorrect username or password, я пытался использоватьТриггер аутентификации AWS Cognito Pre для лямбды, который сбрасывает заголовки ответа, но лямбда не запускается, если пользователь не существует.Любые предложения будут высоко оценены.

1 Ответ

0 голосов
/ 13 мая 2019

Мне удалось решить мою проблему, создав лямбду конечной точки шлюза API, которая прослушивает запрос на вход в систему. Если вход был успешным, я разрешил моему клиенту выполнить аутентификацию с использованием пакета amazon-cognito-identity-js.Вот моя лямбда:

    const UserManagement = require('./UserManagement'); 

    exports.handler = async (event) => {
      const { username, password } = JSON.parse(event.body);
      let body = '';
      let activeUser;
      try {
        const userManagement =  UserManagement.getInstance();
        activeUser = await userManagement.login(username, password);
        if (activeUser) {
          body = JSON.stringify({
            login: true
          });
        }
      } catch (error) {
        console.error('Error in user management.', error);
        body = JSON.stringify({
          login: false
        });
      }
      return {
        statusCode: 200,
        body,
        headers: Object.assign({
          'Access-Control-Allow-Headers': 'Content-Type,Authorization', 
          'Access-Control-Allow-Origin': '*',
          'Access-Control-Allow-Credentials': true,
          'Access-Control-Allow-Methods': 'POST',
        }, {}),
      };
    }

моя бессерверная конфигурация

    provider:
    ...
        - Effect: "Allow"
          Action:
            - "lambda:InvokeFunction"
          Resource: "*"
    functions:
       login:
        timeout: 600
        memorySize: 1600
        handler: functions/login.handler
        events:
          - http:
              path: /login
              method: post
              cors: true

для userManagement см. Документацию amazon-cognito-identity-js.

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