Unified Identity Management logo figure Unified Identity Management logo figure

Бесшовный переход из мобильных приложений в Web

Внимание
Функциональность находится в опытной эксплуатации, возможны изменения в протоколах интеграции и конфигурации систем

Описание

Функциональность бесшовного перехода позволяет пользователю, будучи аутентифицированным в мобильном приложении, переходить в веб-системы (личный кабинет, интернет-банк) сразу также в аутентифицированном состоянии.

Примеры использования:

  • Часть функциональности реализована только в вебе. В мобильном приложении размещается только ссылка

Устройство

Предусловия

  1. Вход (аутентификация) в мобильное приложение осуществляется при помощи UIDM. Способ входа не имеет значения

  2. Вход в веб-систему осуществляется при помощи UIDM

  3. В настройках sso-server данному мобильному приложению разрешено выполнять переходы

  4. В настройках sso-server целевые адреса перехода зарегистрированы в качестве redirect_uri

Сценарий работы

  1. Пользователь выполняет аутентификацию в мобильном приложении.

  2. sso-server в результате аутентификации выдает access token. Мобильное приложение сохраняет токен.

  3. Пользователь активирует ссылку перехода в веб. Это должна быть не просто ссылка, а визуальный элемент с навешенным обработчиком клика.

  4. Мобильное приложение выполняет запрос к sso-server на инициирование новой сессии аутентификации для перехода в веб

  5. Мобильное приложение выполняет запрос к 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
  1. 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")
  1. Мобильное приложение формирует ссылку особым образом https://{consumer_endpoint_url}?code={oauth_code}&goto={target_url}

  1. Мобильное приложение открывает браузер по-умолчанию используя средства мобильной ОС

  2. Браузер открывается и переходит по ссылке

  3. Веб-приложение (или служебный компонент OAuth2 Consumer) получает oauth-код из ссылки и выполняет запрос к sso-server на обмен кода на токены. Эта часть сценария работает как обычно, как будто пользователь только что ввел логин-пароль в форме логина

  4. sso-server создает access token, refresh token и возвращает в ответе

  5. Веб-приложение (или OAuth2 Consumer) устанавливает токены в cookie и выполняет редирект на целевую страницу

Как использовать

Компоненты, необходимые для работы

sso-server

Опционально oauth2-consumer-server

Включение функциональности

В настоящий момент функциональность включена постоянно