Rest API Аутентифікація користувача - datawizio/pythonAPI GitHub Wiki
Аутентифікація - це процес перевірки особи користувача, і у випадку підтвердження, авторизації його з конкретними правами. REST API побудована за принципом розподілу ресурсів, при якому, доступ до конкретного ресурсу отримує тільки власник даного ресурсу. При такому підході користувач може бути впевненим в збереженні своїх даних. REST API підтримує 2 протоколи аутентифікації користувача - OAuth 2.0
та HTTPSignatureAuthentication (ідентифікація за підписом)
. Нижче описаний кожен із цих протоколів окремо
Протокол OAuth 2.0 працює за дуже простою схемою, яку можна представити в два етапи:
- Авторизація користувача
- Отримання токена для доступу до захищених ресурсів
client_id:<client_id>
client_secret:<client_secret>
grant_type:password
username:<your username>
password:<your password>
де client_id, client_secret
- спеціальний ключ і підпис, унікальні для кожного сервісу, який використовує REST API, grant_type
- тип авторизації (в даному випадку за даними користувача), username
- логін користувача, password
- пароль користувача. Для отримання ключа пишіть на [email protected].
Отриманий об'єкт відправляємо POST-запитом на http://api.datawiz.io/api/o/token/
, явно вказуючи в заголовках тип вмісту (напр. Content-Type: application/x-www-form-urlencoded
)
Відповідь сервера при успішній авторизації:
{
"access_token": "a4z4XoChBtHFGyMVrebwgnVcUnDEFc",
"token_type": "Bearer",
"expires_in": 36000,
"refresh_token": "ea9sPsCPyRScREoDVl95MkQPiCF1T5",
"scope": "read write"
}
Отриманийaccess_token
тепер можна використовувати для авторизації команд REST API. Приклад запиту до серверу, з використанням access_token
:
Request
GET http://api.datawiz.io/api/v1/
Headers
Host: api.datawiz.io,
Accept: application/json,
Date: Mon, 17 Feb 2014 06:11:05 GMT,
Authorization: Bearer a4z4XoChBtHFGyMVrebwgnVcUnDEFc
Після виконання запиту сервер повертає статус 200 (команда авторизована), або 401(команда неавторизована). Кожний access_token
видається на визначений період часу (вказаний в expires_in
), після чого користувачу потрібно пройти повторну автентифікацію.