Как правильно реализовать простую аутентификацию на основе токенов в Spring Security?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как правильно реализовать простую аутентификацию на основе токенов в Spring Security?

Сообщение Anonymous »

Я разрабатываю небольшое монолитное приложение REST API на основе Spring со следующими ключевыми моментами:
  • аутентификация будет осуществляться только по имени пользователя и паролю, которые предоставляются непосредственно из мобильного приложения.
  • поскольку отправка имени пользователя и пароля при каждом запросе является плохой практикой, я хочу получить некоторый токен (скажем, JWT), который затем будет использоваться для аутентификации пользователя.
Кажется, это вполне стандартная задача.
Поскольку приложение довольно маленькое, я считаю слишком чрезмерным внедрение Сервера авторизации Spring OAuth и Сервера ресурсов Spring OAuth. Более того, рабочий процесс с паролем владельца ресурса теперь устарел, а общий рабочий процесс — это рабочий процесс кода, который использует форму входа в систему Сервер авторизации, что неприемлемо в моем случае, так как мне нужно указать имя пользователя/пароль непосредственно в вызове REST API (пароль фактически считывается с устройства, а не вводится пользователем).
К сожалению, я не нашел стандартного решения для этого случая ни в документации Spring, ни в Google, ни в AI. Все рекомендации, включая ответы
Аутентификация по токену на основе Spring Security или Spring Security — аутентификация API на основе токенов и аутентификация пользователя/пароля, выглядят следующим образом (просто часть решения):

Код: Выделить всё

fun extractJwtFromRequest(request: HttpServletRequest): String? {
val bearerToken = request.getHeader("Authorization")
return if (bearerToken != null && bearerToken.startsWith("Bearer ")) {
bearerToken.substring(7)
} else null
}
Это больше похоже на хак, чем на стандартное решение, поддерживаемое инфраструктурой.
Кажется, что Spring Security обеспечивает стандартную поддержку для очень простых случаев, таких как базовая аутентификация или аутентификация по форме, но если вам нужно более зрелое решение на основе токенов, это заставляет вас использовать инфраструктуру OAuth.
Итак, для использования аутентификации на основе токенов с Spring я вижу только два способа:
  • использование инфраструктуры OAuth с Resource Сервер и авторизация
    Сервер (в моем случае это кажется неприемлемым).
  • написание пользовательских фильтров, ручное извлечение токена и т. д.
Есть ли другие варианты использования аутентификации на основе токенов в Spring?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ring-secur
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»