Мета
Цей WS дозволяє отримати nonce (одноразовий JWT) для активного клієнта системи.
Ключові положення
Даний метод REST використовується тільки активними клієнтами системи.
Специфікація
Перевірити запит
Перевірити, що
client_id
вказанов разі помилки - повернути 422 ('can't be blank')
Перевірити, що
client_id
існує в базі даних mithrilв разі помилки - повернути 404 ('Client is not found.')
Перевірити, що
client_id
не заблоковано (is_blocked != true)в разі помилки - повернути 401 ('Client is blocked')
Перевірити тип клієнта
Отримати
client_type
зclient_id
Перевірити, що
client_secret
вказано, якщоclient_type
= TRUSTED_PISв разі помилки - повернути 422 ('required property <property> was not present')
Перевірити, що
client_secret
належить клієнту (через таблицю взаємозв'язків)в разі помилки - повернути 401 ('Invalid client id or secret.')
Сервісна логіка
Отримати значення JWT TTL з env параметру
JWT_LOGIN_TTL
(в хвилинах).Згенерувати JWT з наступними параметрами:
alg =
HS512
aud =
trusted-client
ifclient_type
= TRUSTED_PIS, інакшеmithril-login
exp = iat +
JWT_LOGIN_TTL
iat = now()
iss =
EHealth
jti = згенерувати uuid для JWT
nbf = now() - 1 секунда
nonce = згенерувати uuid для nonce
sub = nonce
typ =
access
Відобразити відповідь у віповідності до специфікації.