B2BB2C

Получение кода авторизации

1

Отобразите пользователю кнопку "Войти по Alfa ID"

2

Сформируйте ссылку

3

Переадресация пользователя для прохождения аутентификации

4

Получение кода авторизации в ответе Alfa ID

5

Alfa ID возвращает пользователя на ваш ресурс по тому redirect_uri, который был указан в запросе.

Данные для тестирования аутентификации в песочнице в статье Тестирование Alfa ID.

Шаг 1. Кнопка «Войти по Alfa ID»

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

Шаг 2. Формирование ссылки
Песочница
GET https://id-sandbox.alfabank.ru/oidc/authorize?response_type=code&client_id={client_id}&redirect_uri={redirect_uri}&scope={scope}&state={state}
Пром
GET https://id.alfabank.ru/oidc/authorize?response_type=code&client_id={client_id}&redirect_uri={redirect_uri}&scope={scope}&state={state}

Ссылка должна содержать обязательные параметры, указанные ниже в таблице. Также опционально могут быть использованы необязательные параметры.

Дополнительный параметр prompt=consent необходимо использовать, только если вы хотите, чтобы пользователь подписал новое согласие.

Параметры запроса
QUERY
АТРИБУТ
ОПИСАНИЕ
response_type
stringrequired

Тип ответа. Возможные значения: code

client_id
stringrequired

Идентификатор партнёрского сервиса (банк выдает партнёру API)

redirect_uri
stringrequired

URI перенаправления (который сообщает партнёр API), необходимый для переадресации пользователя после успешной авторизации приложения и которому будет предоставляться код авторизации

scope
stringrequired

Область применения токена доступа (партнёр API информирует, какие scopes будут использованы). Рекомендуется указывать весь доступный scope через знак пробела или %20. Минимально необходимый scope для получения токена - openid

state
stringrequired

Параметр для предотвращения межсайтовой подделки запросов. Значение генерирует партнёр. Рекомендуется использовать идентификатор сессии пользователя или одно из его производных, таких как хэш идентификатора. UUID, 36 символов, включая тире

nonce
stringoptional

Строковое значение, используемое для связи сессии клиента с идентификационным токеном и защиты от повторных атак

code_challenge
stringoptional

Код вызова

code_challenge_method
stringoptional

Метод преобразования кода верификатора. Возможные значения: plain - код верификатор; S256 - S256 BASE64URL-ENCODE(SHA256(ASCII(Код верификатор)))

prompt
stringoptional

Параметр повторной аутентификации и подписания согласия. Возможные значения:

  • •
    none - запрос будет успешно выполнен, только если пользователь уже аутентифицирован и у него есть активное согласие. Иначе вернётся ошибка и страницы аутентификации и согласия не отобразятся пользователю;
  • •
    login - будет запрошена повторная аутентификация пользователя, даже если он уже аутентифицирован;
  • •
    consent - будет запрошено повторное согласие пользователя даже при наличии активного согласия. Необходимо использовать, например, если вы хотите поменять набор запрашиваемых scopes;
  • •
    select_org - пользователю будет предложено выбрать организацию для входа;
  • •
    select_account - пользователю будет предложено выбрать учётную запись для входа
max_age
stringoptional

Максимальный период аутентификации в секундах

Пример запроса
1curl -X GET https://id.alfabank.ru/oidc/authorize?response_type=code&client_id=0cee0683-85ae-49f2-a63d-29f97aad1911&redirect_uri=https%3A%2F%2Fwwww.partner.ru%2Fcode&scope=openid&state=abcdef

Ваше приложение меняет полученный код авторизации code на токен доступа access_token.

Шаг 3. Аутентификация пользователя
  1. 1.
    Пользователь проходит процедуру аутентификации.

2. Пользователь выбирает необходимую организацию (при работе с несколькими юридическими лицами; для физических лиц шаг пропускается).

3. Далее пользователь проходит процедуру авторизации, подписывая форму согласия.

Шаг 4. Получение кода авторизации

Код авторизации получен, если ответ 302 (Found).

Пример успешного ответа
1https://wwww.partner.ru/code?code=8962c304-89b1-11ec-a8a3-0242ac120002&state=abcdef
2-H 'Location: https://wwww.partner.ru/code?code=8962c304-89b1-11ec-a8a3-0242ac120002&state=abcdef'
3-H 'Set-Cookie: ALFASESSIONID=f9e9532f-7b06-4023-83a2-f6cc77a7bfe4 '
Location
stringoptional

Содержит URI для перенаправления. В случае успешного выполнения запроса в заголовке Location передаётся строка вида: redirect_uri?code={code}&state={state}

Set-Cookie
stringoptional

Содержит идентификатор сессии

Пример успешного ответа
1https://wwww.partner.ru/code?code=8962c304-89b1-11ec-a8a3-0242ac120002&state=abcdef
2-H 'Location: https://wwww.partner.ru/code?code=8962c304-89b1-11ec-a8a3-0242ac120002&state=abcdef'
3-H 'Set-Cookie: ALFASESSIONID=f9e9532f-7b06-4023-83a2-f6cc77a7bfe4 '
Location
stringoptional

Содержит URI для перенаправления. В случае неуспешного выполнения запроса в заголовке Location передаётся строка вида: redirect_uri_error_page?error={error}

Пример неуспешного ответа
1https://wwww.partner.ru/code?error=invalid_request&state=abcdef
2-H 'Location: https://wwww.partner.ru/code?error=invalid_request&state=abcdef'
Таблица возможных значений параметра error
Значение Описание
unsupported_response_type Сервер авторизации не поддерживает получение кода авторизации этим методом
login_required Необходима аутентификация конечного пользователя. Возникает, если параметр prompt равен none, а аутентификация без отображения интерфейса для аутентификации конечного пользователя невозможна
invalid_scope Запрошенная область применения недопустима, неизвестна или имеет неправильный формат
invalid_request Отсутствует обязательный параметр, неподдерживаемое значение параметра (кроме grant_type), повторение параметра, несколько учётных данных или неправильный формат запроса
consent_required Необходимо согласие конечного пользователя. Возникает, если параметр prompt равен none, а аутентификации без отображения интерфейса для согласия пользователя невозможна
access_denied Владелец ресурса или сервер авторизации отклонил запрос
invalid_operation_response Используйте только данные из спецификации Authorization Code Flow
login_expired Пользователь не прошёл аутентификацию в течение 15 минут или произвел logout

Отправьте письмо на alfa_api@alfabank.ru, указав следующие данные:

  1. 1.
    client_id.
  2. 2.
    Дата и время запроса с указанием часового пояса.
  3. 3.
    Метод и URI запроса.
  4. 4.
    Заголовки и тело запроса.
  5. 5.
    Полученная ошибка и заголовки ответа, включая X-TraceId.
  6. 6.
    IP-адрес, с которого был отправлен запрос.