Единый вход (SSO) с использованием AWS Cognito и Azure AD

Решения Single Sign-On (SSO) позволяют пользователям вводить учетные данные один раз и получать доступ ко многим системам одновременно. ИТ-администраторы могут использовать локальный SSO-сервер или сторонний сервис для управления аутентификацией, что позволяет централизованно управлять доступом. Решения SSO усиливают управленческие способности и являются весьма выгодными для быстроразвивающихся фирм.

В этой статье вы узнаете, как реализовать Single Sign-On в вашем приложении с помощью AWS Cognito и AzureAD.

Что такое единый вход (SSO)?

Single Sign-On (SSO) — это система, которая заменяет несколько окон входа для различных приложений одним. С помощью SSO пользователи могут получить доступ ко всем услугам SaaS, введя свои регистрационные данные один раз на одной странице (имя пользователя, пароль и т.д.). Предприятия, небольшие организации и частные лица могут использовать SSO для упрощения управления различными идентификаторами и паролями.

Как и любая другая вещь в жизни, использование метода аутентификации Single Sign-on имеет свои преимущества и недостатки. Одним из преимуществ SSO является то, что он позволяет пользователям помнить и управлять меньшим количеством имен пользователей и паролей в нескольких приложениях. С другой стороны, проблема SSO заключается в том, что если пользователи забывают свои учетные данные и не могут их получить, они оказываются заблокированными в различных системах, подключенных к ней.

Как работает SSO?

Служба SSO генерирует маркер аутентификации каждый раз, когда пользователь входит в систему, чтобы отслеживать его проверенный статус. Токен аутентификации — это часть цифровых данных, хранящихся на серверах службы SSO или в браузере пользователя, подобно временному удостоверению личности, выдаваемому пользователем.

Кредит на изображение: Double Octopus

Служба SSO будет проверять каждое приложение, к которому обращается пользователь. Приложение получает токен аутентификации пользователя от службы SSO и предоставляет пользователю доступ с единой регистрацией. Затем служба SSO предложит пользователям войти в систему, если они еще не вошли.

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

Как реализовать SSO с помощью AWS Cognito и Azure AD

AWS Cognito — это служба аутентификации, авторизации и управления пользователями для веб и мобильных приложений. С его помощью пользователи могут войти в систему, используя имя пользователя и пароль или сторонние службы, такие как Azure AD, Amazon или Google. AWS Cognito состоит из двух основных компонентов: пулов пользователей (User pools) — каталога пользователей, который позволяет пользователям входить в систему, и пулов идентификации (Identity pools), которые предоставляют пользователям доступ к другим службам AWS. Пулы пользователей и пулы идентификации могут использоваться независимо или совместно.

С другой стороны, Azure Active Directory (Azure AD) — это облачное решение по управлению идентификацией и доступом (IAM) для предприятий. Его можно рассматривать как основу системы Office 365, которая синхронизируется с местной Active Directory и обеспечивает аутентификацию OAuth для других облачных приложений.

Azure AD будет выступать в качестве поставщика идентификационных данных (IdP), а AWS Cognito — в качестве поставщика услуг (SP).

Прежде чем предоставить пользователю доступ к службам AWS, AWS Cognito проверяет права пользователя у провайдера идентификации, а Azure AD проверяет идентификационные данные пользователя (например, электронную почту, пароли) и подтверждает AWS Cognito, что пользователь должен иметь доступ и что его личность легитимна. Аутентификация Single Sign-On основана на следующих шагах:

  • Пользователь посещает приложение, которое направляет его на веб-сайт, размещенный на AWS Cognito.

  • AWS Cognito определяет происхождение пользователя (по идентификатору клиента, поддомену приложения и так далее) и направляет его к поставщику идентификационных данных для аутентификации. В нашем случае — к странице входа в Azure Active Directory. Это запрос на аутентификацию SAML.

  • Пользователь перенаправляется на URL-адрес SSO в своем браузере. Пользователь либо уже имеет активную сессию браузера с поставщиком идентификации, либо создает ее, войдя в систему. Поставщик идентификации (Azure AD) создает ответ аутентификации в формате XML-документа, который может содержать имя пользователя, адрес электронной почты (и дополнительные характеристики, если они заданы), а затем подписывается сертификатом X.509. Результат возвращается поставщику услуг (AWS Cognito) — Это ответ аутентификации для SAML.

  • Ответ аутентификации извлекается и проверяется с помощью отпечатка сертификата поставщиком услуг, который уже знает поставщика идентификационных данных и имеет отпечаток сертификата. С помощью маркера доступа в URL-адресе личность пользователя подтверждается, и ему предоставляется доступ к приложению.

Теперь, когда вы понимаете значение AWS Cognito и Azure AD и то, как они работают вместе, давайте перейдем к реализации SSO с помощью этих инструментов. Я разбил следующий раздел на различные шаги, чтобы помочь вам лучше понять процедуру.

Шаг 1: Создание пула пользователей Cognito на AWS

Для начала создайте учетную запись AWS. После создания перейдите в AWS Management Console, перейдите в раздел** «All Services «** и нажмите на Cognito в разделе Security, Identity, and Compliance.

На странице Cognito нажмите на «Manage User Pools» -> «Create a user pool» -> добавьте необходимую информацию и нажмите на «Review defaults».

На странице «Обзор» вам предоставляется возможность обновить существующие атрибуты. В нашем случае мы будем обновлять атрибуты электронной почты, поэтому нажмите на значок редактирования в правом верхнем углу экрана.

Затем выберите «Адрес электронной почты или номер телефона» в качестве параметра входа пользователя, выберите «Включить адреса электронной почты» из подкатегорий и нажмите «Следующий шаг».

Наконец, нажмите кнопку «Создать пул», чтобы завершить процесс создания пула. После этого пул должен быть готов к использованию. Запишите идентификатор пула (например, us-east-1 XX123xxXX), поскольку он понадобится нам позже при настройке портала Azure AD и параметров мобильного приложения.

Следующее, что мы сделаем, это зададим доменное имя для нашего пула пользователей. Для этого нажмите на «App integration» -> «Domain name» -> заполните префикс домена -> «Save Changes».

После нажатия кнопки «Сохранить изменения» AWS сгенерирует для вас домен. В моем случае это был [https://example-setup-app.auth.us-east-1.amazoncognito.com](https://example-setup-app.auth.us-east-1.amazoncognito.com), и этот домен будет подключен к пулу пользователей, который мы создали ранее.

Шаг 2: Создание клиента AWS App и включение его в пул пользователей

Следующее, что мы сделаем, это создадим приложение с помощью Cognito Service. Для начала перейдите в «User Pool» -> «General settings» -> «App Clients» -> «Add new app client». Затем добавьте имя для вашего клиента приложений, выберите «Generate client secret» и нажмите на кнопку «Create app client».

Теперь установим клиент приложений, нажав на «App integration» -> «App Client Settings» -> «Select your mobile client app» -> настройте параметры ***в соответствии с форматом на изображении ниже -> «Save changes*».

Шаг 3: Создайте корпоративное приложение Azure AD & подключите его к пулу пользователей Cognito User Pool

Для этого перейдите на портал Azure, нажмите на «Все службы» *и найдите *»Azure Active Directory (Azure AD)».

На странице Azure AD нажмите на «Enterprise applications» -> «New Application» -> «Non-gallery application» -> Введите название вашего приложения и нажмите на кнопку Add.

Теперь, когда ваше приложение разработано, пришло время связать его с пулом пользователей AWS. Выберите «SAML-based Sign-on» из выпадающего списка в разделе **»Single sign-on» ** в вашем бизнес-приложении Azure AD.

На странице SAML добавьте необходимые данные в разделе «Домен и URL», сохраните и загрузите файл SAML. Для контекста:

  • Идентификатор — это идентификатор вашего пула пользователей (от AWS), который строится по следующей схеме: urn:amazon:cognito:sp:us-east-1 XX123xxXXX.

  • Токен аутентификации должен быть отправлен приложением через Reply URL. В SAML это также известно как Assertion Consumer Service (ACS). Он выглядит следующим образом: *https://example-setup-app.auth.us-east-1.amazoncognito.com/saml2/idpresponse*.

Следующее, что мы собираемся сделать, это добавить «Пользователей». Пригласите новых пользователей или назначьте пользователей из списка существующих. Это позволит пользователю получить доступ к вашему приложению, используя данную учетную запись Azure AD. Для этого перейдите в «Enterprise apps» -> «Users and groups» -> «Add user».

После завершения добавления пользователя нажмите «Назначить», чтобы сохранить изменения.

Шаг 4: Настройка поставщика идентификационных данных в пуле пользователей AWS

Итак, у вас есть файл SAML в формате XML и пользователь(и) для входа в систему. Давайте продолжим и настроим провайдера идентификации в пуле пользователей AWS.

При использовании пула пользователей пользователи приложений могут объединяться с другим провайдером идентификации для входа в систему. Для этого нажмите на «Federation» на панели навигации -> «Identity Providers» -> «SAML».

Дайте своему провайдеру имя и загрузите файл SAML, загруженный из Azure AD, затем нажмите на кнопку Create Provider.

Создайте связку между вашим провайдером и атрибутами AWS. В нашем случае нас интересует только электронная почта, поэтому в поле SAML Attribute добавьте следующее *http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress.*.

Теперь давайте назначим нашему клиенту приложения провайдера идентификации. Для этого перейдите в App Integration на навигационной панели -> App Client Settings -> выберите ваше приложение, а затем нажмите на флажок Enabled Identity Providers. Сохраните изменения.

Вот и все, что вам нужно сделать в консоли управления AWS и на сайте Azure. Теперь вы можете протестировать свою настройку.

Шаг 5: Тестирование настройки

На портале Azure перейдите в область Single Sign-On вашего приложения и нажмите на кнопку Test SAML Settings.

После этого необходимо установить расширение My Apps Secure Sign-in Extension и войти в систему, используя учетную запись, которую вы добавили в это приложение в шаге 3:

Если вход прошел успешно, вы сможете просмотреть запрос и ответ SAML, а также маркер:

Теперь у вас должны быть все необходимые данные, чтобы начать настройку SSO-аутентификации с учетной записью Azure AD в вашем веб- или мобильном приложении.

Заключение

Чтобы ваши пользователи могли входить в веб- или мобильные приложения, используя свои корпоративные идентификаторы, вы изучили процесс SSO и то, как объединить пул пользователей Amazon Cognito с Azure AD в качестве внешнего провайдера идентификации SAML в этой статье блога.

Если у вас остались вопросы, вы можете оставить их в разделе комментариев.

Оцените статью
devanswers.ru
Добавить комментарий