Публічне API — вже не тренд, а реальність. Використовуйте наявні рішення API Management для надання публічного доступу до API. Для захищеності й зручності користування вашим API використовуйте наявні стандарти: OAuth 2.0 та OpenID Connect.
Відео виступу: https://www.youtube.com/watch?v=gbQgYBD_PAA
3. Що таке API?
• API – Application Programming Interface, набір
визначень взаємодії різнотипного програмного
забезпечення [Wikipedia]
• API Економіка — це економіка, в якій компанії
виставляють власні бізнес-активи (доступ до
даних) або сервіси у вигляді (Web) API третім
компаніям з метою отримання доданої вартості
за рахунок створення нових сервісів та активів
нового класу
8. Різні аудиторії різного API
Внутрішній API,
закритий (приватний)
API для партнерів, закритий
Публічний API, відкритий
9. Що спільного у цих компаній?
Мережа Starbucks
підтримала цифровий тренд
та отримала $1.6млрд-ний
транзакційний бізнес, що
самостостійно обслуговує
21% транзакцій
Автомобільна компанія
пропонує використовувати
дані з автомобілей,
оптимізує досвід
експлуатації машин, продає
дані по використанню
машин своїм партнерам
Банк стимулює іновації,
проводить хакатони,
інтегрує програму нагород з
парнерами роздрібної
торгівлі
ЦИФРОВА ПЛАТФОРМА, ЩО ПОБУДОВАНА НА БАЗІ API СТРАТЕГІЇ
10. API стратегія
Доступність програмних
додатків, даних для
мобільних пристроїв, IoT та
різноманітних хмарних
сервісів
ПУБЛІКАЦІЯ API ДЛЯ
РОЗШИРЕННЯ
ОХОПЛЕННЯ БРЕНДУ
Використання екосистеми
розробників та партнерів для
створення сервісів й
продуктів на базі наявних
активів та сервісів
ШВИДКІСТЬ РОЗРОБКИ
За рахунок організації
бібліотек, стандартизації API
та повторного використання
програмного коду
СТВОРЕННЯ НОВОГО
БІЗНЕСУ
Монетизація доступу до
активів, створення нових
продуктів та створення нових
сервісів
01 02
04 03
БЕЗПЕЧНЕ НАДАННЯ
СЕРВІСІВ ТА ДАНИХ
14. SOAP vs REST
для публічного API
Source: Cloud Elements, “The State of API Integration Report”
15. Основні ризики безпеки REST API
1. API з HTTPS, але без аутентифікації
2. API без обмеження кількості або частоти
викликів
• Тільки 45% API Managment рішень в
продуктиві мають сконфігуроване обмеження
кількість викликів
3. Реалізація логіки та безпеки в неправильному
місці
Source: https://apifriends.com/2017/08/03/rest-api-security/,
https://resources.distilnetworks.com/all-distil-blog-posts/infographic-the-inconvenient-truth-about-api-security
16. Ризик #1. API з HTTPS,
але без аутентифікації
Source: https://www.troyhunt.com/controlling-vehicle-features-of-nissan/
17. Ризик #2. API без обмеження
кількості або частоти викликів
Source: http://mashable.com/2014/08/25/national-weather-service-down-android-app/#EJDV0UykT8qm
18. Ризик #3. Реалізація логіки та
безпеки в неправильному місці
Source: http://www.ifc0nfig.com/dominos-pizza-and-payments/
19. Інші ризики безпеки REST API
1. Незахищені ідентифікаційна інформація та ключі
2. Незашифровані дані (payload)
3. Неправильне використання HTTPS
• Реалізація Certificate Key Pinning
4. Слабкі ключі API
• Інколи API-ключ надсилається як частина URL-адреси,
що відображається у журналах проксі-серверів і легко
копіюється
Source: https://apifriends.com/2017/08/03/rest-api-security/
21. Авторизація та аутентифікація
Source: Cloud Elements, “The State of API Integration Report”
• Аутентифікація та авторизація —
фундамент для надання публічного
доступу до API, що потрібні для знання
який саме клієнт використовує API й до
чого у нього має бути доступ
• Зважаючи на потреби безпечного
доступа до API, більшість організацій
відмовляються від способу базової
аутентифікації, вимагаючи додаткові
кроки для верифікації особистості клієнта
22. The OAuth 2.0
Authorization Framework
The OAuth 2.0 authorization framework enables a third-party application to
obtain limited access to an HTTP service, either on behalf of a resource owner by
orchestrating an approval interaction between the resource owner and the HTTP
service, or by allowing the third-party application to obtain access on its own
behalf.
Source: IETF OAuth2 (http://datatracker.ietf.org/doc/rfc6749/)
23. OAuth 2.0: framework de-facto
• OAuth 2.0 використовує токени, а не покладається на ім’я
користувача та пароль
• Можливість використання конкретного токену доступу (access
tokern) може бути обмежена у часі, або ж мати інші критерії
валідності (наприклад, розташування), таким чином доступ може
бути легко скасований, якщо такі критерії не будуть виконані
• OAuth 2.0 дозволяє провайдеру надавати дозвіл на доступ до
конкретних функцій API або даних за допомогою “областей”
(наприклад, право виключно на читання даних через API, або
доступ на читання і запису через API)
• Рівень гнучкості, запропонований OAuth 2.0, робить його ідеальним
вибором для аутентифікації та авторизації клієнтів
24. Ролі OAuth 2.0
Власник ресурсів
Resource owner
Програма-клієнт
Client application
Авторизаційний сервер
Authorization server
Cервер ресурсів
Resource server
Source: IETF OAuth2 (http://datatracker.ietf.org/doc/rfc6749/)
27. Зоопарк
• OAuth (Open Authorization) — це фреймворк для
авторизації ресурсів
• OpenID Connect — це інтероперабельний протокол
аутентифікації, що базується на специфікації OAuth 2.0
• JSON Web Token (JWT) — це JSON об’єкт, що
визначений як безпечний спосіб представлення
інформації між двома сторонами; JWT складається із
заголовку, корисної інформації та підпису
• SAML (Security Assertion Markup Language) є загальним
стандартом, який охоплює профілі, прив'язки та
конструкції для реалізації Single Sign On (SSO),
федерації та управління ідентифікацією
28. Source: https://spin.atomicobject.com/2016/05/30/openid-oauth-saml/
OAuth 2.0 OpenId SAML
Токен JSON та SAML JSON XML
Авторизація Так Ні Так
Аутентифікація
Псевдо-
аутентифікація
Так Так
Рік створення 2005 2006 2001
Версія OAuth2 OpenID Connect SAML 2.0
Транспорт HTTP
HTTP (GET,
POST)
HTTP, SOAP
Основне
призначення
Авторизація API
SSO для клієнтських
додатків
SSO для
enterprise
29.
30. • Публічне API — вже не тренд, а реальність
• Використовуйте наявні рішення, не вигадуйте
велосипед
• Для надання публічного доступу до API
використовуйте наявні API Management
рішення
• Для захищеності й зручності користування
вашим API використовуйте наявні стандарти:
OAuth 2.0 та OpenID Connect
32. BankID:
як використовується OAuth 2.0
• Інформація:
• ПІБ, номер мобільного телефону, ідентифікаційний код, дата
народження, стать, електронна адреса, фактична адреса та
адреса народження, паспорт, закордонний паспорт, посвідчення
особи
• Авторизація & Ресурси:
• ПриватБанк, А-банк, Банк Південний, Конкорд, Ощадбанк
• Для простоти використання недостатньо використати OAuth 2.0,
потрібно мати потрібні доступні сервери авторизації
The data: between September 2016 to March 2017
Over 107 public endpoints, 58 beta endpoints, 28,000 individual instances and 1.6 Billion+ API Calls
Resource owner: An entity capable of granting access to a protected resource. When the resource owner is a person, it is referred to as an end-user.
Resource server: The server hosting the protected resources, capable of accepting and responding to protected resource requests using access tokens.
Client: An application making protected resource requests on behalf of the resource owner and with its authorization.
Authorization server: The server issuing access tokens to the client after successfully authenticating the resource owner and obtaining authorization.