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

12

Я настраиваю новый веб-сервис RESTful и мне нужно предоставить модель управления доступом на основе ролей . Мне нужно создать архитектуру, которая позволит пользователям предоставлять свое имя пользователя и пароль для получения доступа к сервисам, а затем ограничивать использование ими сервисов (какие сервисы они могут использовать, чтение против чтения / записи и т. Д.) В зависимости от ролей. назначен этим пользователям.

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

Но мне не удалось найти хорошую статью, статью, книгу о передовых практиках и шаблонах для программной архитектуры, которая реализует эти решения.

В частности:

  • Как хранить данные пользователя и права доступа? (модель данных, местоположение, формат)
  • Каковы хорошие шаблоны проектирования для представления и отслеживания их на сервере? (сессии в памяти, поиск в БД каждый раз и т. д.)
  • Каковы хорошие шаблоны для безопасного сопоставления этих прав с сервисами в базе кода?
  • Какие архитектурные решения могут помочь сделать систему более безопасной и надежной?
  • Какие уроки извлекли люди из окопов?

Я ищу шаблоны проектирования и рекомендации для архитектуры программного обеспечения вне каких-либо конкретных технологий.

(Если технологии имеют значение, я планирую реализовать это, используя python, twisted и базу данных postgresql)

Аллен
источник
Похоже, вам просто нужен кто-то, чтобы написать это для вас;)
Martin Blore
К сожалению, это выглядит так. Просто казалось странным, что эта часть стека нигде не описана. Даже если бы я мог найти описание того, как такой сайт, как newegg, digg или даже stackoverflow обрабатывает учетные данные пользователя и доступ в бэкэнде, это помогло бы.
Аллен
Вы достигли прогресса в этом?
Брайан Эйджи
Вы рассматривали oAuth2 ? Для него доступны серверные и клиентские библиотеки на многих популярных языках, которые должны упростить его реализацию.
Сэм

Ответы:

5

OpenAM.

http://forgerock.com/openam.html

Как хранить данные пользователя и права доступа? (модель данных, местоположение, формат)

Диспетчер личных данных Отдельно от любого веб-сервера. LDAP основе.

Каковы хорошие шаблоны проектирования для представления и отслеживания их на сервере? (сессии в памяти, поиск в БД каждый раз и т. д.)

Решено вашими рамками. Не думай больше. Просто используйте уже созданные хорошие шаблоны вашего фреймворка.

Каковы хорошие шаблоны для безопасного сопоставления этих прав с сервисами в базе кода?

Решено вашими рамками. Каждая структура использует немного другой подход. У каждого языка есть свои особенности. Django, например, активно использует для этого декораторы Python.

Какие архитектурные решения могут помочь сделать систему более безопасной и надежной?

Больше? Больше чем что?

С. Лотт
источник
В моей конкретной настройке я не думаю, что я могу использовать что-то вроде OpenAM. Мне не нужна единая регистрация в масштабах всего предприятия. Я думаю, что мне нужно что-то меньшее и более автономное.
Аллен
@Allen. Мы не используем его для единого входа в масштабе предприятия. Мы используем его для простого управления идентификацией.
S.Lott