Бесшовный переход из мобильных приложений в Web
|
Внимание
|
Функциональность находится в опытной эксплуатации. Возможны изменения в протоколах интеграции и конфигурации систем. |
Функциональность бесшовного перехода позволяет пользователю, будучи аутентифицированным в мобильном приложении, переходить в веб-системы (личный кабинет, интернет-банк) сразу также в аутентифицированном состоянии.
Примеры использования:
-
Часть функциональности реализована только в вебе. В мобильном приложении размещается только ссылка
Устройство
-
Аутентификация в мобильное приложение осуществляется при помощи UIDM. Способ входа не имеет значения.
-
Аутентификация в веб-систему осуществляется при помощи UIDM.
-
В настройках
sso-serverданному мобильному приложению разрешено выполнять переходы. -
В настройках
sso-serverцелевые адреса перехода зарегистрированы в качествеredirect_uri.
-
Пользователь выполняет аутентификацию в мобильном приложении.
-
sso-serverв результате аутентификации выдает токен доступа. Мобильное приложение сохраняет токен. -
Пользователь активирует ссылку перехода в веб. Это должна быть не просто ссылка, а визуальный элемент с навешенным обработчиком клика.
-
Мобильное приложение выполняет запрос к
sso-serverна инициирование новой сессии аутентификации для перехода в веб. -
Мобильное приложение выполняет запрос к
sso-serverна получение OAuth-кода для перехода в веб.POST https://{sso_base_url}/sso/oauth2/access_token Accept: application/json Content-Type: application/x-www-form-urlencoded client_id={client_id}& client_secret={client_secret}& realm=/customer& grant_type=urn:roox:params:oauth:grant-type:m2m-authorization-code& service=dispatcher& accessToken={access_token}-
client_id — идентификатор мобильного приложения
-
client_secret — секрет, в данном сценарии — пустая строка
-
access_token — токен доступа, полученный ранее при аутентификации
ПримечаниеЗначение параметра service будет изменено на service=native2web.
-
-
sso-serverсоздает OAuth код и возвращает в ответе:HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8{ "access_token": "46ccb2d9-fc46-49d2-9d2c-05d5e3aa62d1", "expires_in": 59 }В ответе в поле
access_tokenнаходится oauth code.ПримечаниеИмя поля будет изменено на "code". Следует писать код парсинга как response.contains("code")?response.get("code"):response.get("access_token") -
Мобильное приложение формирует ссылку особым образом: https://{consumer_endpoint_url}?code={oauth_code}&goto={target_url}
Примерhttps://ib.example.com/oauth2-consumer?code=12312321&goto=https://ib.example.com/offers/1 -
Мобильное приложение открывает браузер по-умолчанию используя средства мобильной ОС.
-
Браузер открывается и переходит по ссылке.
-
Веб-приложение (или служебный компонент OAuth2 Consumer) получает oauth-код из ссылки и выполняет запрос к
sso-serverна обмен кода на токены. Эта часть сценария работает как обычно, как будто пользователь только что ввел логин-пароль в форме логина. -
sso-serverсоздает access token, refresh token и возвращает в ответе. -
Веб-приложение (или OAuth2 Consumer) устанавливает токены в cookie и выполняет перенаправление на целевую страницу.
Компоненты, необходимые для работы
-
sso-server(Основной сервис аутентификации: выполняет аутентификацию, предоставляет API для аутентификации, самообслуживания и администрирования) -
опционально:
oauth2-consumer-server(Обработчик протокола OAuth2 от лица Service Provider)