Актуальную версию документа см. на сайте Министерства цифрового развития, связи и массовых коммуникаций Российской Федерации по адресу https://digital.gov.ru/ru/documents/6186/.

В.2.3 Получение маркера доступа в обмен на авторизационный код

Когда авторизационный код получен, система-клиент может сформировать запрос методом POST на https-адрес ЕСИА для получения маркера доступа <63>. Один авторизационный код можно обменять на один маркер доступа. В тело запроса должны быть включены следующие сведения:

--------------------------------

<63> Адрес в тестовой среде: https://esia-portal1.test.gosuslugi.ru/aas/oauth2/te

- <client_id> - идентификатор системы-клиента (мнемоника системы в ЕСИА, указанная прописными буквами);

- <code> - значение авторизационного кода, который был ранее получен от ЕСИА и который необходимо обменять на маркер доступа;

- <grant_type> - принимает значение "authorization_code", если авторизационный код обменивается на маркер доступа;

- <client_secret> - подпись запроса в формате PKCS#7 detached signature в кодировке UTF-8 от значений четырех параметров HTTP-запроса: scope, timestamp, clientId, state (без разделителей). <client_secret> должен быть закодирован в формате base64 url safe. Используемый для проверки подписи сертификат должен быть предварительно зарегистрирован в ЕСИА и привязан к учетной записи системы-клиента в ЕСИА. ЕСИА поддерживает сертификаты в формате X.509. ЕСИА поддерживает алгоритм формирования электронной подписи ГОСТ Р 34.10-2012 и алгоритм криптографического хэширования ГОСТ Р 34.11-2012;

- <state> - набор случайных символов, имеющий вид 128-битного идентификатора запроса (необходимо для защиты от перехвата), генерируется по стандарту UUID; этот набор символов должен отличаться от того, который использовался при получении авторизационного кода;

- <redirect_uri> - ссылка, по которой должен быть направлен пользователь после того, как даст разрешение на доступ (то же самое значение, которое было указано в запросе на получение авторизационного кода);

- <scope> - область доступа, т.е. запрашиваемые права (то же самое значение, которое было указано в запросе на получение авторизационного кода);

- <timestamp> - время запроса маркера в формате yyyy.MM.dd HH:mm:ss Z (например, 2013.01.25 14:36:11 +0400), необходимое для фиксации начала временного промежутка, в течение которого будет валиден запрос с данным идентификатором (<state>);

- <token_type> - тип запрашиваемого маркера, в настоящее время ЕСИА поддерживает только значение "Bearer".

Если запрос успешно прошел проверку, то ЕСИА возвращает ответ в формате JSON:

- <access_token> - маркер доступа для данного ресурса;

- <expires_in> - время, в течение которого истекает срок действия маркера (в секундах);

- <state> - набор случайных символов, имеющий вид 128-битного идентификатора запроса, генерируется по стандарту UUID (совпадает с идентификатором запроса);

- <token_type> - тип предоставленного маркера, в настоящее время ЕСИА поддерживает только значение "Bearer";

- <refresh_token> - маркер обновления для данного ресурса.

Пример ответа:

{

"access_token" :

"eyJhbGciOiJSUzI1NiIsInNidCI6ImFjY2VzcyIsInR5cCI6IkpXVCIsInZlciI6MX0.eyJleHAiOjEzNTk1NDAxODcsInNjb3BlIj

oiaHR0cDpcL1wvZXNpYS5nb3N1c2x1Z2kucnVcL2VtcF9pbmY_b3JnX29pZD0xMDAwMDAwMzU3IiwiaXNzIjoiaHR0cDpcL1wvZXNpY

S5nb3N1c2x1Z2kucnUiLCJuYmYiOjEzNTk1MzY1ODcsInVybjplc2lhOnNpZCI6IjE2ZDdmOTNkLTZjZTgtNDE3OS04ZmFmLTdmZDQ2

ZDMyMDhhNiIsInVybjplc2lhOnNial9pZCI6MTAwMDAwMDM4NSwiY2xpZW50X2lkIjoiRVNJQSIsImlhdCI6MTM1OTUzNjU4N30",

"expires_in" : 3600,

"state" : "9be638a9-0e05-42e1-b4f8-a3e30457fbdd",

"token_type" : "Bearer",

"refresh_token" : "54039d1f-9917-43cd-961a-2729c891ef8c"

}

При невозможности выдачи маркера доступа возвращается код ошибки (Таблица 16).