Порядок авторизації в системі
Порядок взаємодії складових частин Системи ЦД та Системи Клієнта під час ідентифікації користувача (клієнта) реалізується відповідно до протоколу OAuth 2.0.
Для ідентифікації Системи Клієнта-ДУ на сервері Системи ЦД, відповідні прикладні Системи Клієнта попередньо реєструються згідно додаткової угоди до Депозитарного договору з такою депозитарною установою.
Для забезпечення ідентифікації та згідно протоколу Oauth 2.0 для Системи Клієнта встановлюються наступні маркери безпеки:
– ідентифікатор Системи Клієнта client_id, який однозначно ідентифікує Систему Клієнта;
– секретна строчка доступу client_secret, за якою сервер ЦД буде видавати серверу Системи Клієнта маркер доступу - access_token.
Перелік доступних користувачу методів визначається згідно ролі, яка призначена користувачу згідно Договору або Додаткової угоди.
Маркери безпеки клієнтів АРІ підлягають регулярній зміні відповідно до Положення про інформаційно-телекомунікаційну систему обробки інформації Центрального депозитарію цінних паперів (Положення про СОІ)».
# Порядок взаємодії Систем ЦД та Клієнта під час ідентифікації:
# Запит на ідентифікацію:
# відправка запиту на ідентифікацію
Відправка користувачем (клієнтом) запиту на ідентифікацію за методом GET протоколу HTTPS, обробка запиту та відправка сервером Системи ЦД відповіді до Системи Клієнта:
GET
https://api.csd.ua/auth?client_id={client_id}&state={state}
# параметри запиту
| Параметр | Опис |
|---|---|
| {client_id} | Ідентифікатор Системи Клієнта (значення наведене для прикладу) |
| {state} | Параметр, значення якого має бути повернуто. Значення має бути випадковим |
обробкаа запиту та відправка сервером Системи ЦД серверу Cистеми Клієнта відповіді на завершення ідентифікації у вигляді JSON-тексту виду:
Content-Type: application/json
{
«code»:«»,
«state»:«»
}
# відповідь серверу
Опис параметрів відповіді серверу прикладної системи на завершення ідентифікації
| Параметр | Опис |
|---|---|
| code | Код авторизації |
| state | Значення, що надсилалось у запиті |
# Завершення ідентифікації користувача
Обробка сервером Системи Клієнта етапу завершення ідентифікації користувача:
# відправка запиту на отримання маркера доступу
Відправка сервером Системи Клієнта запита серверу Системи ЦД на отримання маркера доступу за кодом завершення ідентифікації (code) методом POST протоколу HTTPS виду:
POST
https://api.csd.ua/auth/get-access-token?grant_type={authorization_code}&client_id={client_id}&client_secret={client_secret}&code={code}
Примітка
Код авторизації (code) може бути використаний лише один раз.
# відповідь серверу
Обробка запиту та відправка сервером Системи ЦД серверу Cистеми Клієнта відповіді з маркером доступу у вигляді JSON-тексту виду:
Content-Type: application/json
{
«access_token»:«»,
«token_type»:«bearer»,
«expires_in»:«»,
«refresh_token»:«»,
«user_id»:«»
}
# параметри відповіді серверу
Опис параметрів відповіді серверу Cистеми Клієнта з маркером доступу
| Параметр | Опис |
|---|---|
| {access_token} | Маркер доступу (значення маркеру наведене для прикладу) |
| {token_type} | Тип маркеру доступу (має фіксоване значення для застосування засобами ідентифікації – bearer – доступ за маркером для пред’явника) |
| {expires_in} | Час завершення дії маркеру доступу |
| {user_id} | Ідентифікатор ідентифікованого користувача |
| {refresh_token} | Маркер для отримання нового маркеру доступу |
У сервері ідентифікації Системи ЦД ідентифікатори ідентифікованих користувачів (user_id) зберігаються у відпоідному журналі в базі даних (БД) і час завершення дії маркеру доступу (expires_in) вказує на термін існування відповідних записів у БД.
У разі помилки обробки запиту відправляється структура у вигляді JSON-тексту виду:
Content-Type: application/json
{
«error»:«invalid_grant»,
«error_description»:«»
}
# параметри помилки відповіді серверу
Опис параметрів помилки відповіді серверу системи Клієнта з маркером доступу
| Параметр | Опис |
|---|---|
| error | Тип помилки (значення наведене для прикладу) |
| error_description | Опис помилки (значення наведене для прикладу) |
# Запит на подовження дії маркеру доступу
Запит складається з таких кроків:
# відправка запита на подовження дії маркера доступу
Відправка сервером Системи Клієнта запита серверу ідентифікації Системи ЦД на подовження дії маркера доступу за маркером подовження дії маркеру доступу (refresh_token) методом POST протоколу HTTPS виду:
POST
https://api.csd.ua/auth/get-refresh-token?grant_type={refresh_token}&client_id=&client_secret=&refresh_token=
# отримання відповіді з маркером доступу
обробка запиту та відправка сервером ідентифікації Системи ЦД серверу Системи Клієнта відповіді з маркером доступу у вигляді JSON-тексту виду:
Content-Type: application/json
{
«access_token»:«»,
«token_type»:«bearer»,
«expires_in»:«»
}
# параметри відповіді серверу
Опис параметрів відповіді серверу Системи Клієнта з маркером доступу
| Параметр | Опис |
|---|---|
| {access_token} | Тип помилки (значення наведене для прикладу) |
| {token_type} | Тип маркеру доступу (має фіксоване значення для застосування засобами ідентифікації – bearer – доступ за маркером для пред’явника) |
| {expires_in} | Час завершення дії маркеру доступу |
У разі помилки обробки запиту відправляється структура у вигляді JSON-тексту виду:
Content-Type: application/json
{
«error»:«invalid_grant»,
«error_description»:«»
}
# Запит на завершення сесії користувача
Запит складається з таких кроків:
# відправка запита на видалення даних сесії
Відправка сервером Системи Клієнта запита серверу ідентифікації системи ЦД на видалення даних сесії користувача за маркером доступу (access_token) методом POST протоколу HTTPS виду:
POST
https://api.csd.ua/auth/get-user-logout?refresh_token=
# відповідь серверу з маркером доступу
Обробка запиту та відправка сервером ідентифікації Системи ЦД серверу Системи Клієнта відповіді з маркером доступу у вигляді JSON-тексту виду:
Content-Type: application/json
{
«error»:«0»,
«error_description»:«»
}
У разі помилки обробки запиту відправляється структура у вигляді JSON-тексту виду:
Content-Type: application/json
{
«error»:«1»,
«error_description»:«»
}
# параметри відповіді серверу
Опис параметрів запиту на отримання інформації про користувача Системи Клієнта
| Параметр | Опис |
|---|---|
| {refresh_token} | Маркер доступу |