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

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

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

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

<68> Адрес в тестовой среде: 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:

- <id_token> - маркер идентификации;

- <access_token> - маркер доступа для данного ресурса (если он запрашивался);

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

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

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

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

{

"id_token":

"eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzcyI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWI

iOiAiMjQ4Mjg5zYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZfV3pBMk1qIiwKICJleHAiOiAxMzE

xMjgxOTcwLAogImlhdCI6IDEzMTEyODA5NzfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6qp6IcmD3

HP99Obi1PRs-cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJNqeGpe-

gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7TpdQyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0

YzFC6g6EJbOEoRoSK5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4XUVrWOLrLl0nx7RkKU8NXNHq

-rvKMzqg",

"expires_in" : 3600,

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

"token_type" : "Bearer",

}

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