В настоящее время мое мобильное приложение выполняет единый вход, выполнив следующие действия:
- Пользователь выберет одного из IDP из списка в мобильном приложении и нажмет кнопку «Вход».
- Мобильное приложение вызовет управление браузером приложения и переход к URL-адресу единого входа
- Если IDP еще не прошел проверку подлинности, он запрашивает у пользователя аутентификацию
- Пользователю будет предоставлена форма для входа в систему для ввода его / ее учетных данных.
- После успешной аутентификации пользователя с помощью IDP утверждение SAML будет передано
Web Server
Web Server
доверяет IDP, принимает токен SML и генерирует токен сеанса - Компонент мобильного браузера принимает токен сеанса и поделиться им с собственным мобильным приложением
- вызовы мобильного приложения
web server
API с этим токеном сеанса
Теперь из-за соображений безопасности токен сеанса не рекомендуется хранить на мобильном устройстве, тогда как OID C или токены JWT могут храниться
Поскольку мое веб-приложение не поддерживает генерацию OID C токенов, поэтому я думал добавить еще один слой AWS Cognito между моим мобильным устройством и IDP. Теперь процесс проверки подлинности будет выглядеть следующим образом: ( поток проверки подлинности IdP пула пользователей SAML )
- . Мобильное приложение запускает процесс входа, направляя пользователя в пользовательский интерфейс, размещенный на * 1051. *.
- Пользователь перенаправлен на провайдера идентификации.
- IdP аутентифицирует пользователя при необходимости. Если IdP распознает, что у пользователя есть активный сеанс, IdP пропускает проверку подлинности для обеспечения единого входа (SSO).
- IdP ОТПРАВЛЯЕТ утверждение SAML службе Amazon Cognito.
- После проверки утверждения SAML и сбора пользовательских атрибутов (утверждений) из подтверждения Amazon Cognito возвращает токены OID C в мобильное приложение для уже вошедшего в систему пользователя.
Now у меня вопрос, как только у меня OID C токен, как мобильное приложение будет вызывать мой web server
для любых вызовов API? Это через Cognito? Прямой вызов на мой веб-сервер не будет работать, так как он не распознает токен OID C, возвращенный Cognito? Как мне добиться этого взаимодействия от мобильного приложения до моего веб-сервера?
ОБНОВЛЕНИЕ: я смог проверить токен JWT с моего веб-сервера, выпущенного Cognito. Если кто-то хочет сделать то же самое, он может обратиться к этой библиотеке cognitojwt (не написанной мной, но нашел ее в inte rnet)