Аутентификация и роль в веб-сервисах на основе SOAP (Java)

Пожалуйста, помогите мне понять следующее и какую технологию я должен использовать для лучшей реализации:

  1. Сколько типов авторизации / безопасности у нас есть и какой из них лучший.
  2. Как мы можем реализовать безопасность на основе ролей.
  3. То же самое относится и к услугам Restful.

1 ответ

Первый вопрос можно интерпретировать двумя способами. Сначала вы запрашиваете метод аутентификации, протокол между клиентом и сервером. Вот два:

  • BASIC AUTH - клиент отправляет имя пользователя и пароль в текстовом виде в запросе. Если вы делаете внутреннюю услугу (внутри вашей корпоративной сети) или имеете зашифрованный канал (HTTPS), это работает нормально.
  • KERBEROS - это прекрасно работает в мире Windows, и все управляется из Active Directory. Но если вы пытаетесь принести его в Java, вы просите кошмаров.

Во-вторых, вы можете попросить Java-фреймворк, который управляет безопасностью. Это может быть весенняя безопасность, например. Spring security позиционирует себя в цепочке фильтров перед вашим обслуживанием. Если запрос (с использованием, например, BASIC_AUTH) разрешен, он проходит, в противном случае - нет. Безопасность Spring может быть настроена для поиска пользователей многими способами: база данных, ваш собственный код, ldap (и активный каталог).

Второй вопрос Весенняя охрана справляется с ролями отлично. Я всегда позволяю своим приложениям интрасети зависеть от ролей, которые мое приложение выбирает из AD через LDAP. Довольно легко контролировать, какие роли нужны пользователю для доступа к функции. Вроде как это:

@Secured("ROLE_ADMIN")

Третий вопрос. Это зависит от вашей структуры обслуживания, но, скорее всего, да, то же самое применимо.

Другие вопросы по тегам