ALB жалуется на когнито

Я пытаюсь подключить балансировщик нагрузки приложений к AWS Cognito, и все кажется правильным, за исключением случаев, когда я пытался сохранить изменения и получаю сообщение об ошибке «У клиента пула пользователей должен быть секрет клиента», я погуглил, но не найду что-нибудь полезное.

Мне удалось успешно протестировать пользовательский интерфейс Cognito Authentication (я думаю ...), поэтому я не понимаю, почему AWS будет жаловаться на клиента пула пользователей.

Итак, вопрос в том, сталкивался ли кто-нибудь с этой проблемой раньше, и если да, то как вы ее решили?

РЕДАКТИРОВАТЬ:

По сути, то, что я сделал, это с одной стороны я настроил Cognito для работы только с Google OAuth (я удалил стандартную версию Amazon), а с другой стороны я создал балансировщик нагрузки приложений с несколькими правилами, каждое правило указывает на другую цель group, каждая целевая группа - это приложение Docker, работающее на Kubernetes. (он же EKS). у всех этих приложений есть разные типы аутентификации или их нет вообще. Итак, идея состоит в том, чтобы добавить правило в ALB для аутентификации пользователей с помощью Cognito. проблема в том, что после добавления всех необходимых параметров и именно тогда, когда я собираюсь сохранить свои изменения, все эти новые изменения. Я получаю сообщение об ошибке «У клиента пула пользователей должен быть секрет клиента», я ввел это точное предложение в Google и не получил ничего, кроме сообщения, которое я разместил в других местах.

Спасибо за ваше время!


person juanp_1982    schedule 28.10.2019    source источник
comment
Не уверен, зачем вообще нужен балансировщик нагрузки для подключения к пулу пользователей AWS Cognito.   -  person Robin Varghese    schedule 29.10.2019
comment
Привет, @RobinVarghese, я пытаюсь выполнить это aws.amazon .com / blogs / aws / built-in-authentication-in-alb.   -  person juanp_1982    schedule 29.10.2019
comment
Итак, балансировщик нагрузки используется для приложения, которое вы собираетесь разрабатывать и использовать. В ALB есть опция для аутентификации запросов. Тем не менее, вам нужны модули для сброса пароля, утерянного пароля и т. Д. Там, где требуется кодирование.   -  person Robin Varghese    schedule 30.10.2019
comment
Убедитесь, что вы создали клиент приложения и используете идентификатор клиента приложения. Перейдите в раздел «Управление пулом пользователей» - ›Выберите пул пользователей-› перейдите в «Клиент приложения» (левое меню) - ›Добавить еще один клиент приложения. используйте эти учетные данные.   -  person Robin Varghese    schedule 30.10.2019


Ответы (2)


Секрет клиента приложения требуется для клиента приложения, который вы создаете в Cognito. Вы не можете добавить секрет клиента приложения к существующему клиенту приложения, но вы можете просто создать новый и оставить отметку в поле создания секрета (что по умолчанию).

Это требуется как дополнительный уровень безопасности стандарта Oauth, который реализует интеграция Cognito и ALB. «Код авторизации», который возвращается в ALB после аутентификации с помощью Cognito, затем будет обменен ALB на Cognito на токены. Для этого обмена потребуется секрет, и поскольку ALB - единственное приложение, которое знает секрет, это делает его более безопасным.

person callo    schedule 20.01.2020

Для правильной работы AWS Cognito потребуется несколько базовых конфигураций. См. Отрывок кода из Amplify (AWS Dev Lib для Cognito).

import Amplify, { Auth } from 'aws-amplify';

Amplify.configure({
    Auth: {

        // REQUIRED only for Federated Authentication - Amazon Cognito Identity Pool ID
        identityPoolId: 'XX-XXXX-X:XXXXXXXX-XXXX-1234-abcd-1234567890ab',

        // REQUIRED - Amazon Cognito Region
        region: 'XX-XXXX-X',

        // OPTIONAL - Amazon Cognito Federated Identity Pool Region 
        // Required only if it's different from Amazon Cognito Region
        identityPoolRegion: 'XX-XXXX-X',

        // OPTIONAL - Amazon Cognito User Pool ID
        userPoolId: 'XX-XXXX-X_abcd1234',

        // OPTIONAL - Amazon Cognito Web Client ID (26-char alphanumeric string)
        userPoolWebClientId: 'a1b2c3d4e5f6g7h8i9j0k1l2m3',

        // OPTIONAL - Enforce user authentication prior to accessing AWS resources or not
        mandatorySignIn: false,

        // OPTIONAL - Configuration for cookie storage
        // Note: if the secure flag is set to true, then the cookie transmission requires a secure protocol
        cookieStorage: {
        // REQUIRED - Cookie domain (only required if cookieStorage is provided)
            domain: '.yourdomain.com',
        // OPTIONAL - Cookie path
            path: '/',
        // OPTIONAL - Cookie expiration in days
            expires: 365,
        // OPTIONAL - Cookie secure flag
        // Either true or false, indicating if the cookie transmission requires a secure protocol (https).
            secure: true
        },

        // OPTIONAL - customized storage object
        storage: new MyStorage(),

        // OPTIONAL - Manually set the authentication flow type. Default is 'USER_SRP_AUTH'
        authenticationFlowType: 'USER_PASSWORD_AUTH'
    }
});

// You can get the current config object
const currentConfig = Auth.configure();
person Robin Varghese    schedule 29.10.2019
comment
Привет, Робин, мне нужно сначала настроить Amplify перед настройкой Cognito? - person juanp_1982; 29.10.2019
comment
Amplify - это оболочка над уже существующим AWS SDK (все API) для ускорения разработки приложений. Так что выбор за разработчиком. Я выберу Amplify. потому что я получаю много функций из коробки. - person Robin Varghese; 30.10.2019
comment
Привет, @Robin, я не разрабатываю приложение, я использую этот балансировщик нагрузки в качестве точки входа для приложений, работающих в Kubernetes и других приложениях, которые находятся за другим VPC. ALB работает так, как ожидалось, за исключением того, что я не могу добавлять когнитивные функции :-( - person juanp_1982; 30.10.2019
comment
Не могли бы вы поделиться архитектурой, может быть, мы сможем присоединиться к отдельной комнате и обсудить это. Добрый совет. - person Robin Varghese; 01.11.2019
comment
Привет, Робин, большое спасибо за ваше время и интерес к помощи! :-) что вы подразумеваете под архитектурой и частной комнатой ?? Я обновил свой первый пост, чтобы лучше описать мою проблему - person juanp_1982; 01.11.2019