6.6.3.2. Проверка обратного вызова в режиме Push

Клиент должен проверить, что полученный <client_notification_token>, используемый для аутентификации запроса как токен на предъявителя, действителен и связан со значением идентификатора <auth_req_id>, полученным в обратном вызове Push. Если токен на предъявителя недействителен, рекомендуется вернуть сообщение об ошибке HTTP с кодом состояния 401 с заголовком "Unauthorized response".

Клиент должен проверить ID токен (пункт 6.7.2 [6]).

Клиент должен убедиться, что значение параметра <urn: openid: params: jwt: claim: auth_req_id> из ID токена соответствует значению <auth_req_id> из запроса аутентификации.

Клиент должен проверить полученный токен доступа с помощью значения <at_hash> из ID токена путем сравнения значения Base64url-кодирования левой половины хэш-кода полученного значения <access_token> с полученным значением параметра <at_hash> и аналогичным образом - токен обновления (при наличии параметра <refresh_token>), используя <urn: openid: params: jwt: claim: rt_hash> из ID токена.

Примечание. Проверка производится в соответствии с рекомендациями пункта 6.7.2 [6].

Если запрос действителен, конечной точке уведомления клиента рекомендуется отправить ответ HTTP с кодом состояния 204 с заголовком "No Content". Сервер авторизации также может принимать HTTP-ответы с кодом состояния 200 (OK), а тело в ответе игнорировать. Клиент не должен возвращать код HTTP 3xx, а сервер авторизации - следовать за перенаправлениями. Обработка кодов ошибок HTTP с кодом состояния в диапазонах 4xx и 5xx должна определяться подразделами 5.5 и 5.6 [15].

Ниже приведен пример декодированного ID токена:

{

"iss": "https://server.example.ru",

"sub": "248289761001",

"aud": "s6BhdRkqt3",

"email": "janedoe@example.ru",

"exp": 1537819803,

"iat": 1537819503,

"at_hash": "Wt0kVFXMacqvnHeyU0001w",

"urn:openid:params:jwt:claim:rt_hash": "sHahCuSpXCRg5mkDDvvr4w",

"urn:openid:params:jwt:claim:auth_req_id":"1c266114-a1be-4252-8ad1-04986c5b9ac1"

}