У мене є продукт із простою API REST, щоб користувачі продукту могли безпосередньо інтегруватися з функціями продукту без використання мого веб-інтерфейсу користувача.
Нещодавно у мене з’являвся інтерес від різних третіх сторін щодо інтеграції своїх настільних клієнтів з API, щоб дозволити користувачам мого продукту отримувати доступ до своїх даних за допомогою цього стороннього додатку.
Я бачив, що програми, які хочуть використовувати Twitter, підтверджують автентифікацію за допомогою сторінки входу, розміщеної в Twitter, яка надає певний дозвіл додатку на доступ до даних цього користувача. Ви натискаєте кнопку "Дозволити" або "Заборонити" і процес автентифікації завершено. Facebook використовує той самий механізм, що і найкращий.
Після подальших досліджень, здається, це OAuth в дії, і, вважаючи, що мій API заснований на .Net, я думаю, що я повинен використовувати DotNetOpenAuth і надати подібний механізм. На жаль, зразки є малодокументованими (якщо вони взагалі є), і єдині підручники, які я можу знайти в Інтернеті, здаються зосередженими на тому, щоб допомогти вам забезпечити механізм входу для користувачів, щоб вони могли увійти на ваш веб-сайт за допомогою стороннього постачальника.
Мені б дуже хотілося зробити, щоб мій REST API обробляв усі основні функції автентифікації та бізнес-логіки для мого веб-додатку, і під кришкою мій веб-додаток, по суті, є ще одним додатком, який просто використовує API через OAuth. Користувачі повинні автентифікуватись на веб-сайті або безпосередньо, використовуючи своє ім’я користувача та пароль, або через сторонніх постачальників, таких як MyOpenID або Facebook, і тоді веб-сайт якось використовує повернутий маркер для автентифікації проти API REST.
В основному виглядає так, що мені потрібен мій API, щоб якось розмістити послугу OAuth, але також користувачі використовують послугу OAuth третьої сторони. Я не можу допомогти, але думаю, що мені не достатньо зрозуміти OAuth, щоб вирішити, чи я занадто ускладнюю речі, чи якщо я намагаюся зробити, це хороший чи поганий спосіб робити.
Чи може хтось дати мені, принаймні, широкий огляд кроків, які мені потрібно зробити, або що я повинен переглянути, щоб це відбулося? Або вкажіть мене на якісь підручники? Або підірвіть мою пропозицію і скажіть, що я з цим (архітектурно) все неправильно?