App2Web через WebView
Для авторизации в приложении с использованием компонента WebView в T‑ID реализован сценарий App to Web.
Принцип работы
Партнер инициализирует запуск WebView через кнопку Войти с Т‑ID.
Пользователь инициирует процесс авторизации, нажимая Войти с Т‑ID на сайте или в приложении партнера.
Сервис партнера генерирует параметры
code_verifier
иcode_challenge_method
и создает их преобразованную версиюcode_challenge
через преобразованиеcode_challenge = code_challenge_method(code_verifier)
, гдеcode_challenge_method
— трансформирующая функция. Подробнее о хешировании параметраcode_verifier
.- Чтобы предотвратить последствия возможного перехвата кода, используйте защиту Proof Key for Code Exchange. Значение должно быть уникальным для каждого запроса кода авторизации.
- Требуемая генерация —
base64_url(SHA256(code_verifier))
. Пример генератора.
Авторизация инициируется вызовом метода
GET https://id.tbank.ru/auth/authorize
со следующими параметрами:- client_id — идентификатор, который вы получили после регистрации.
- redirect_uri — ссылка в приложение (app link), указанная в анкете.
- code_challenge.
- code_challenge_method.
- response_type: code.
- response_mode=query.
Пример запроса:
GET https://id.tbank.ru/auth/authorize?client_id=%client_id%&redirect_uri=https://myintegration.ru/auth/complete&code_challenge={codeChallenge}&code_challenge_method=S256&response_type=code
Открывается окно аутентификации id.tbank.ru для ввода номера телефона.
Пользователь вводит данные для прохождения аутентификации и нажимает Продолжить, соглашаясь с передачей данных. В зависимости от настроек партнерского приложения, пользователь может отметить данные, которые он не готов предоставить. Если пользователь разрешает передачу всех данных, в следующих авторизациях это окно не открывается.
На
https://myintegration.ru/auth/complete
приходит запрос вида:https://myintegration.ru/auth/complete?code=c.1aGiAXX3Ni&session_state=hXXXXXXY3kgs3nx0H3RTj3JzCSrdaqaDhU6lS8XXXXX.i4kl6dsEB1SQogzq00
Происходит переход в приложение партнера по app link с параметром
code
— сохраните его для дальнейшего обмена на токены.
Токены
Чтобы получить Access и Refresh токены, используйте метод POST https://id.tbank.ru/auth/token
.
Авторизационный сервер проверяет code_verifier
на соответствие code_challenge
и возвращает токены или отвечает ошибкой.
- Authorization: basic, где username и password соответствуют
client-id
, который вы получили на электронную почту после регистрации. Примеры составления на разных языках. - Content-type:
application/x-www-form-urlencoded
. - grant_type:
authorization_code
. - redirect_uri:
mobile_redirect_url
— тот, который был направлен вauthorize
. - code_verifier.
- code.