Архітектура програмного забезпечення для аутентифікації / контролю доступу веб-сервісу REST


12

Я створюю новий веб-сервіс RESTful і мені потрібно надати модель управління доступом на основі ролей . Мені потрібно створити архітектуру, яка дозволить користувачам надати своє ім’я користувача та пароль, щоб отримати доступ до служб, а потім обмежити, як вони можуть користуватися послугами (які сервіси вони можуть використовувати, читати проти читання / запису тощо) на основі ролей призначений цим користувачам.

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

Але мені не вдалося знайти хороший пост, статтю, книгу про кращі практики та шаблони для архітектури програмного забезпечення, яка реалізує ці рішення.

Конкретно:

  • Як слід зберігати дані користувачів та права доступу? (модель даних, місцезнаходження, формат)
  • Які хороші шаблони дизайну для представлення та відстеження їх на сервері? (сеанси в пам'яті, пошук кожного разу, тощо)
  • Які хороші зразки для безпечного відображення цих прав на сервіси в кодовій базі?
  • Які архітектурні варіанти можуть допомогти зберегти систему більш безпечною та надійною?
  • Які уроки люди отримують з окопів?

Я шукаю - це моделі дизайну та рекомендації щодо архітектури програмного забезпечення поза будь-якими конкретними технологіями.

(Якщо технології мають значення, я планую реалізувати це за допомогою python, скрученої та бази даних postgresql)


Здається, що вам просто потрібен хтось, щоб написати це вам;)
Мартін Блер

На жаль, це виглядає так. Просто здавалося дивним, що ця частина стеку ніде не описується. Навіть якби я міг знайти опис того, як веб-сайт на зразок newegg, digg або навіть навіть stackoverflow обробляє облікові дані користувачів та доступ до бекенду, це допоможе.
Аллен

Чи досягли ви прогресу в цьому?
Bryan Agee

Чи вважали ви oAuth2 ? Для нього доступні бібліотеки серверів і клієнтів багатьма популярними мовами, що полегшить його реалізацію.
Сам

Відповіді:


5

OpenAM.

http://forgerock.com/openam.html

Як слід зберігати дані користувачів та права доступу? (модель даних, місцезнаходження, формат)

Менеджер ідентичності. Окремо від будь-якого веб-сервера. На основі LDAP

Які хороші шаблони дизайну для представлення та відстеження їх на сервері? (сеанси в пам'яті, пошук кожного разу, тощо)

Вирішено вашими рамками. Не думайте більше. Просто скористайтеся вже побудованими хорошими моделями дизайну.

Які хороші зразки для безпечного відображення цих прав на сервіси в кодовій базі?

Вирішено вашими рамками. Кожна основа використовує дещо інший підхід. Кожна мова має дещо різні особливості. Наприклад, Джанго дуже використовує для цього декораторів Python.

Які архітектурні варіанти можуть допомогти зберегти систему більш безпечною та надійною?

Більше? Більше, ніж що?


У моїй конкретній установці я не думаю, що я можу використовувати щось на кшталт OpenAM. Мені не потрібен єдиний вхід для всіх підприємств. Я думаю, що мені потрібно щось менше і більш самодостатнє.
Аллен

@Allen. Ми не використовуємо його для єдиного входу в межах підприємства. Ми використовуємо це для простого управління ідентичністю.
С.Лотт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.