<aside> <img src="/icons/info-alternate_gray.svg" alt="/icons/info-alternate_gray.svg" width="40px" /> Aвтентифікація клієнта
Важливо! Заведення нового клієнта здійснюється через заявку.
</aside>
<aside> <img src="/icons/info-alternate_gray.svg" alt="/icons/info-alternate_gray.svg" width="40px" />
Авторизація користувача здійснюється з використанням keycloack.
</aside>
<aside> <img src="/icons/list-indent_gray.svg" alt="/icons/list-indent_gray.svg" width="40px" />
Зміст
</aside>
sequenceDiagram
actor U as User
participant S as System
participant I as IAM service
U ->> S: Open URL
Note over S,I: Отримання авторизаційного коду сесії
S ->> I: GET **/auth/realms/eStock/protocol/openid-connect/auth**
I -->> S: Return code
U ->> S: Enter login and password
Note over S,I: Автентифікація користувача
S ->> I: POST **/auth/realms/eStock/login-actions/authenticate**
alt Користувача не знайдено
I -->> S: Return "Неправильний юзернейм чи пароль"
else Користувача знайдено
I -->> S: Return 302 Found
Note over S,I: Обмін авторизаційного коду сесії на токен користувача
S ->> I: POST **/auth/realms/eStock/protocol/openid-connect/token**
I -->> S: Return token
end
S -->> U: Provides access
<aside> <img src="/icons/report_red.svg" alt="/icons/report_red.svg" width="40px" />
Запити конфігуруються в бібліотеці. Все, що потрібно — це заповнити наступний конфіг:
Щодо уточнень — звертайтесь до розробника через наші канали зв’язку.
Щодо уточнень — звертайтесь до розробника через наші канали зв’язку.
</aside>
<aside>
<img src="/icons/swap-horizontally_gray.svg" alt="/icons/swap-horizontally_gray.svg" width="40px" /> Щоб отримати авторизаційний код сесії, необхідно надіслати GET
запит на ендпоінт /auth/realms/eStock/protocol/openid-connect/auth.
<aside> <img src="/icons/push-pin_gray.svg" alt="/icons/push-pin_gray.svg" width="40px" /> Cпецифікація ендпоінту
Деталі специфікації ендпоінту авторизації через OpenID Connect (OIDC) standard Authorization Endpoint доступні за посиланням.
</aside>
<aside> <img src="/icons/arrow-right_gray.svg" alt="/icons/arrow-right_gray.svg" width="40px" /> Параметри запиту
Параметр | Тип | Приклад значення | Опис |
---|---|---|---|
response_type | string | code | Має містити значення code. |
client_id | string | mic-client-test | Id клієнта, отриманий для інтеграції з e-Stock API. |
state | string | ZzFWUS5USldrT2FuZEczSjR4bWxfOUl6MUxFcX55VWF6YmZiSjdpdER2VkNB | Опціональне поле, може використовуватись для організації внутрішнього управління сесіями на стороні МІС. |
redirect_uri | string | http://localhost:4444/home | URL-адреса, на яку сервер автентифікації перенаправляє браузер після того, як e-Stock IAM service авторизує користувача. |
scope | string | openid offline_access profile email | |
Деталі уточнювати у розробника. | |||
code_challenge | string | CrLESFHBvJc4EtZB2jUxAm1czMplNhy_JvKB6r-MRTw | Деталі уточнювати у розробника. |
code_challenge_method | string | S256 | Деталі уточнювати у розробника. |
nonce | string | Y2phWmVrTmVLSGNDdjRXd2FzeWpfZThRbWdWcDNTWTk5TUVOVFZ0T2o0aTha | Деталі уточнювати у розробника. |
ui_locales | string | uk | Параметр для контролю locale логін сторінки. Альтернатива хедеру ‘Accept-Language’. |
Можливі значення: ‘uk’, ‘en’. |
<aside> <img src="/icons/forward_gray.svg" alt="/icons/forward_gray.svg" width="40px" /> Приклад запиту
<https://iam-stage.es.meddata.com.ua/auth/realms/eStock/protocol/openid-connect/auth?response_type=code&client_id=meddata-ui-client&state=Y2phWmVrTmVLSGNDdjRXd2FzeWpfZThRbWdWcDNTWTk5TUVOVFZ0T2o0aTha&redirect_uri=https%3A%2F%2Fdemand-qa.meddata.com.ua%2Fuk%2Frequisitions%2F1026%2Fzoz%2Fpatients&scope=openid%20offline_access%20profile%20email&code_challenge=CrLESFHBvJc4EtZB2jUxAm1czMplNhy_JvKB6r-MRTw&code_challenge_method=S256&nonce=Y2phWmVrTmVLSGNDdjRXd2FzeWpfZThRbWdWcDNTWTk5TUVOVFZ0T2o0aTha&ui_locales=uk>
</aside>
</aside>
</aside>
<aside> <img src="/icons/info-alternate_gray.svg" alt="/icons/info-alternate_gray.svg" width="40px" /> Цей ендпоінт перенаправить користувача на сервер автентифікації e-Stock та, у випадку успішної автентифікації, поверне авторизаційний код на вказаний у запиті редірект URL.
</aside>
<aside>
<img src="/icons/swap-horizontally_gray.svg" alt="/icons/swap-horizontally_gray.svg" width="40px" /> Щоб отримати токен користувача, необхідно надіслати отриманий на попередньому кроці авторизаційний код сесії POST
запитом на ендпоінт /auth/realms/eStock/protocol/openid-connect/token.
<aside> <img src="/icons/push-pin_gray.svg" alt="/icons/push-pin_gray.svg" width="40px" /> Cпецифікація ендпоінту
Програма повинна відправити запити на ендпоінт напряму, а не через браузер користувача. Деталі специфікації ендпоінту з OpenID Connect (OIDC) доступні за посиланням.
</aside>
<aside> <img src="/icons/arrow-right_gray.svg" alt="/icons/arrow-right_gray.svg" width="40px" /> Параметри заголовку
Параметр | Тип | Приклад значення | Опис |
---|---|---|---|
Content-Type | string | application/x-www-form-urlencoded | Має передаватись значення application/x-www-form-urlencoded*.* |
Параметри запиту
Параметр | Тип | Приклад значення | Опис |
---|---|---|---|
grant_type | string | authorization_code | Має містити значення authorization_code. |
code | string | 30efa04d-e79f-4a1d-82c5-844e6d4130d9.2529a0fa-ab24-4a96-9136-8395f4168fe4.58731e7a-ee90-4266-adc7-207378a1918f | Значення яке отримали як результат виклику ендпоінту /auth/realms/eStock/protocol/openid-connect/auth. |
client_id | string | mic-client-test | Id клієнта, отриманий для інтеграції з e-Stock API. |
client_secret | string | 2qmLRkBfxdN8TIkfdugAze428MRXYrgt | Secret клієнта, отриманий для інтеграції з e-Stock API. |
redirect_uri | string | http://localhost:4444/home | URL-адреса, на яку сервер автентифікації перенаправляє браузер після того, як e-Stock IAM service авторизує користувача.. Ммає бути такий саме, як і в запиті /auth/realms/eStock/protocol/openid-connect/auth. |
<aside> <img src="/icons/forward_gray.svg" alt="/icons/forward_gray.svg" width="40px" /> Приклад запиту
POST <https://iam-stage.es.meddata.com.ua/auth/realms/eStock/protocol/openid-connect/token&>
Content-Type='application/x-www-form-urlencoded'
client_id=mic-client-test&
grant_type=authorization_code&
response_type=code&
redirect_uri=http://localhost:4444/home&
client_secret=2qmLRkBfxdN8TIkfdugAze428MRXYrgt
</aside>
</aside>
<aside> <img src="/icons/arrow-left_gray.svg" alt="/icons/arrow-left_gray.svg" width="40px" /> Параметри відповіді
У відповіді будуть отримані оновлені авторизаційні токени.
<aside> <img src="/icons/backward_gray.svg" alt="/icons/backward_gray.svg" width="40px" /> Приклад відповіді
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token":"eyJz9sdfsdfsdfsd...",
"refresh_token":"dmcxd329ujdmkemkd349r...",
"token_type":"Bearer",
"expires_in":3600,
"refresh_expires_in":7200,
...
}
</aside>
<aside> <img src="/icons/info-alternate_lightgray.svg" alt="/icons/info-alternate_lightgray.svg" width="40px" /> Токен містить таку інформацію, як ім’я та роль користувача, ідентифікатор організації користувача щодо. Для декодування токену користувача можна використовувати сервіс https://jwt.io/:
</aside>
</aside>
</aside>
<aside> <img src="/icons/light-bulb_gray.svg" alt="/icons/light-bulb_gray.svg" width="40px" /> Також система дозволяє конфігурувати TTL токенів для кожного клієнта індивідуально. Дефолтні TTL для токенів використовуються такі: