Использование AWS Cognito и AD FS в качестве аутентификации для веб-приложения - PullRequest
0 голосов
/ 13 мая 2018

В настоящее время мы создаем веб-приложение, используя полный серверный стек в AWS.До сих пор мы очень успешно использовали AWS Lambda, AWS DynamoDB и Cognito User Pools.Это приложение предназначено для корпоративного использования, и один из моих клиентов хочет иметь возможность регистрировать всех пользователей, используя их текущие учетные данные Active Directory.Я использовал AD FS в прошлом для других приложений, но всегда получалось немного взломать, чтобы заставить его работать.

Теперь я хочу отправить инструкции клиенту о том, как настроить их ADДоверительная сторона FS доверяет аутентификации по моему приложению.

Я прочитал, что лучший способ сделать это - создать Cognito Identity Provider, который связывается с Cognito User Pool.В пуле пользователей вы должны создать провайдера SAML и загрузить файл metadata.xml с сервера AD FS.

Я настроил лабораторный сервер с AD FS и могу заставить его работать.Теперь я не уверен, что я делаю неправильно с точки зрения настройки доверия проверяющей стороны или настройки Cognito.Я был в этом целую вечность и прочитал почти каждую статью в блоге, которую я могу найти.Если кто-то может помочь мне или указать мне правильное направление, это будет очень ценно.

1 Ответ

0 голосов
/ 16 мая 2018

После большого разочарования я теперь могу ответить на этот вопрос, поэтому я решил собрать простой пошаговый ответ для начинающих с этой борьбой.

Я только иду в настройку аутентификации, а не авторизацию. Авторизация требует ролей IAM и некоторой другой логики, которая зависит от архитектуры. Я рад обсудить это в другом месте.

Есть 2 компонента для этого вида установки:

  1. Пул пользователей AWS Cognito с федеративным поставщиком удостоверений
  2. Windows Server с установленной AD FS

Создание домена Cognito User Pool

В пуле пользователей Cognito в разделе Общие настройки выберите Клиенты приложения и добавьте его, если его нет (идентификатор понадобится позже).

Затем перейдите на Имя домена в разделе Интеграция приложений , выберите действительный префикс домена и сохраните его.

доверие проверяющей стороны в Windows AD FS

Вам нужно будет заставить компанию установить доверие проверяющей стороны. Необходимые шаги:

  1. Открыть консоль управления AD FS
  2. Создание нового доверия проверяющей стороны
  3. Выберите, чтобы ввести детали вручную
  4. Введите имя для доверия, которое легко идентифицировать как ваше приложение
  5. Выберите для использования ADFS 2.0
  6. В этом примере сертификат не нужен, поэтому просто нажмите «Далее»
  7. Установите флажок, чтобы включить протокол SAML 2.0, и введите URL-адрес в следующем формате: https://<domain_prefix>.auth.<region>.amazoncognito.com/saml2/idpresponse (префикс домена установлен на предыдущем шаге)
  8. Идентификатор доверия проверяющей стороны должен быть urn:amazon:cognito:sp:<pool-id>, где pool-id - идентификатор пула пользователей AWS Cognito, найденный в Общие параметры пула пользователей
  9. Разрешить всем пользователям проходить аутентификацию (при условии, что это ваше намерение)

Теперь необходимо добавить претензии в траст проверяющей стороны.

  1. Щелкните правой кнопкой мыши доверие доверяющей стороны и выберите "Изменить заявки"
  2. Создать новую заявку, которая отправляет атрибуты LDAP
  3. Дайте ему имя (я обычно использую Профиль , но это зависит от вас)
  4. Сделать атрибут хранилища Active Directory
  5. Заполните таблицу, как вам нужно. Требование заключается в том, что у вас есть имя ID , которое возвращается (я обычно использую имя-участника-пользователя , сопоставленное с имя ID ). Остальная часть таблицы, как вам нужно. Например, имя-имени может отображаться на FName

Федеративные удостоверения в пуле пользователей AWS Cognito

Поэтому, как разработчику приложения, вам нужно настроить пул Cognito User. Пройдите через мастера и выберите нужные настройки. В любом случае федеративные удостоверения не обязательно играют по тем же правилам, что и сам пул пользователей.

Шаги для настройки федеративного удостоверения:

  1. В пуле пользователей Cognito выберите Поставщики удостоверений в Федерация
  2. Нажмите на SAML
  3. Укажите конечную точку документа метаданных (обычно в форме https://<fqdn>/FederationMetadata/2007-06/FederationMetadata.xml). Если вы не можете загрузить этот файл и загрузить его, нажав «Выбрать файл»
  4. Введите имя провайдера, которое имеет смысл для вас, но не вставляйте пробелы в имени
  5. Идентификаторы необязательны (см. Их использование ниже)
  6. Проверка включения потока выхода IdP приведет к тому, что ваши пользователи выйдут из их федеративного удостоверения, а также ваше приложение при выходе.
  7. Нажмите, создайте провайдера

Отображение атрибутов для федеративной идентичности

  1. Создайте сопоставления полей для федеративного удостоверения, перейдя к Сопоставление атрибутов в Федерация в пуле пользователей.
  2. Выбрать SAML
  3. Нажмите Добавить атрибут SAML
  4. Убедитесь, что Capture отмечен, введите атрибуты SAML сверху (например, FName) и выберите атрибут пула пользователей, с которым он связан.

Настройка приложения-клиента

Последний шаг перед тестированием - настроить клиент приложения, который вы создали ранее.

  1. Перейти к Настройки клиента приложения в Интеграция приложений
  2. Введите настройки для соответствующего клиента приложения
  3. Выберите всех соответствующих провайдеров идентификации (в частности, одну настройку выше)
  4. Вы можете установить разделенный запятыми список обратных вызовов и URL-адресов выхода из системы,URL обратного вызова должны указывать на то место, где будет использоваться токен после аутентификации (см. Тестирование ниже).
  5. Выберите атрибуты OAuth 2.0, как требуется, но для тестирования выберите все, кроме Учетные данные клиента

Тестирование

Для тестирования вы можете попробовать несколько разных URL-адресов в виде: -

  • https://<domain_prefix>.auth.<region>.amazoncognito.com/authorize?idp_identifier=<idp_identifier>&response_type=token&client_id=<app_client_id>&redirect_uri=<app_client_callback_URL>, чтобы перейти непосредственно к конечной точке авторизации
  • https://<domain_prefix>.auth.<region>.amazoncognito.com/login?response_type=token&client_id=<app_client_id>&redirect_uri=<app_client_callback_URL> для перехода к пользовательскому интерфейсу входа AWS

idp_identifier - это необязательное поле, определенное при создании федеративного удостоверения.Это также не требуется в URL.

Это одностраничное веб-приложение является хорошим инструментом для проверки того, что все работает, и вы получаете желаемый ответ.

Я надеюсь, что это помогает другим людям.

...