Rest API Аутентифікація користувача - datawizio/pythonAPI GitHub Wiki

Аутентифікація користувача

Навіщо потрібна аутентифікація?

Аутентифікація - це процес перевірки особи користувача, і у випадку підтвердження, авторизації його з конкретними правами. REST API побудована за принципом розподілу ресурсів, при якому, доступ до конкретного ресурсу отримує тільки власник даного ресурсу. При такому підході користувач може бути впевненим в збереженні своїх даних. REST API підтримує 2 протоколи аутентифікації користувача - OAuth 2.0 та HTTPSignatureAuthentication (ідентифікація за підписом). Нижче описаний кожен із цих протоколів окремо

OAuth 2.0 (рекомендований)

Протокол OAuth 2.0 працює за дуже простою схемою, яку можна представити в два етапи:

  • Авторизація користувача
  • Отримання токена для доступу до захищених ресурсів
Кожна команда REST API повинна бути підписана – це означає, що вона має мати інформацію за допомогою якої REST API аутентифікує її. В даному випадку цю функцію виконує спеціальний токен, отриманий в процесі авторизації користувача. Протокол 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), після чого користувачу потрібно пройти повторну автентифікацію.

⚠️ **GitHub.com Fallback** ⚠️