Tag Archives: API

Термінологія OAuth

Тут в блозі завалялось вже більше десяти чернеток, пора потрохи розгрібати. Наступна нотатка повинна допомогти розібратись в документації по протоколу OAuth. Щоправда для того аби щось запрограмувати все одно доведеться читати документацію конкретного API.

Аутентифікація – перевірка того факту. що суб’єкт – той за кого себе видає.
Авторизація – перевірка того факту, що суб’єкт має право на доступ до певного ресурсу.
Credentials (мандат) – реєстраційна інформація потрібна для аутентифікації.

В схемі протоколу OAuth описані три агенти: клієнт (споживач, client, consumer), сервер (провайдер послуги, server, service provider) і власник ресурсу (користувач, user, resource owner).

В традиційній схемі аутентифікації використовує реєстраційну інформацію для доступу до своїх ресурсів, які зберігаються на сервері.
Серверу взагалі пофіг звідки приходить запит, і чи не працює клієнт від імені когось іншого. Основне аби спільний для клієнта і сервера секрет відповідав очікуванням сервера.

Дуже часто клієнт працює від чужого імені. Наприклад браузер працює від імені користувача, використовуючи реєстраційну інформацію (зазвичай логін та пароль) яку йому довірив користувач. Клієнтом може бути веб-застосунок, який поділяється на фронт-енд та бекенд, і запити до сервера йдуть з бекенда. Але якою б не була архітектура клієнта – він все одно діє від імені користувача як одне ціле.

Захищений ресурс – це те що зберігається чи надається сервером, і потребує аутентифікації для доступу. Ресурси належать і контролюються власником ресурсу – користувачем. Будь-хто хто потребує доступу до захищених ресурсів повинен отримати дозвіл на авторизацію від власника користвача (що гарантується сервером). Ресурсом можуть бути як дані (документи, медіа, контакти) так і сервіси (публікація новин в блозі, переказ коштів і т.п).

Протокол OAuth дозволяє користувачу надати доступ клієну до захищеного ресурсу не передаючи йому свій мандат. Тобто клієнт аутентифікується як окремий клієнт і працює від свого імені з дозволу користувача.

OAuth використовує три типи облікової інформації – облікова інформація клієнта, тимчасову та токени. Специфікація називає їх відповідно consumer key and secret (client credentials), request token and secret (temporary credentials), та access token and secret (token credentials).

Перші в параметрах запиту називаються відповідно:

{
    'oauth_consumer_key': 'anonymous',
    'oauth_consumer_secret': 'anonymous'
}

Використовуються для аутентифікації клієнта. Дозволяє серверу вияснити який клієнт хоче отримати доступ. В даному випадку це анонімний клієнт. Щоб клієнт не був анонімним його реєструють на сервері де отримують відповідний ключ і секрет. Сервер звертається до користувача з повідомленням про те що хтось просить доступ до певних дій. Виглядати це може наприклад так:

Після того як користувач дає дозвіл, клієнту (зазвичай за допомогою GET запиту, за адресою яка повідомляється серверу параметром callback_url, хоча можливо існують і інші способи) передають тимчасовий мандат (токен та секрет запиту).

Клієнт звертається до сервера з цим токеном та секретом, і сервер замінює їх на постійні. Цей крок мені дещо незрозумілий (яку схему атаки він дозволяє уникнути?), але чомусь так воно працює.

Посилання:


Filed under: Кодерство, Павутина Tagged: API

YouTube стає платформою

Сьогодні нарешті відбулась анонсована нещоавно демострація нових фіч YouTube. Власне кажучи, вона заключалась у значному розширені функціоналу API YouTube, що був доступний стороннім розробникам. Google робить розміщення відео на “Трубі” простішим. Суть його в тому, що воно дозволить користувачам завантажувати, дивитись, шукати та коментувати відео на інших вебсайтах, а той час як back-end робота YouTube буде непомітна: все відео та коментарі будуть хоститись на ЮТюбі в той час як ви можете повністю змінювати інтерфейс відображення (і плеєра в тому числі 😉 ) на власний розсуд.
Якщо зупинитись на цьому детальніше, то ось короткий перелік нових фіч:

  • Завантажувати відео та відео-відповіді на YouTube
  • Додавати/редагувати користувацькі та відео метадані (заголовки, описи, коментарі, улюблене, контакти, тощо)
  • Отримувати локалізовані стандарті RSSки (напр., відео з найбільшим рейтингом, або кількістю програвань) на 18 мовах
  • Налаштовувати  зовнішній вигляд плеєра та контролювати відображення відео за допомогою функцій API.

Отже фактично YouTube стає безкоштовним відеохостингом. Хоча і не зовсім безкоштовним… Як відомо, “Труба” наразі має право вставляти у відео рекламу на власний розсуд (цю фічу нещодавно якраз почали тестувати) для відео які там хостяться, а з технічної точкти зору відео, завантажене через АПІ нічим не відрізняється в цьому сенсі від відео завантажене через власне сайт. Дуже непоганий спосіб монетизації сервісу, адже хостинг відео пропонує набагато більше поле для діяльності, аніж його пошук.

За матеріалами TechCrunch.