Бесшовный переход из мобильных приложений в Web
Внимание
|
Функциональность находится в опытной эксплуатации. Возможны изменения в протоколах интеграции и конфигурации систем. |
Функциональность бесшовного перехода позволяет пользователю, будучи аутентифицированным в мобильном приложении, переходить в веб-системы (личный кабинет, интернет-банк) сразу также в аутентифицированном состоянии.
Примеры использования:
-
Часть функциональности реализована только в вебе. В мобильном приложении размещается только ссылка
Устройство
-
Аутентификация в мобильное приложение осуществляется при помощи RooX UIDM. Способ входа не имеет значения.
-
Аутентификация в веб-систему осуществляется при помощи RooX 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)