- аутентификация будет осуществляться только по имени пользователя и паролю, которые предоставляются непосредственно из мобильного приложения.
- поскольку отправка имени пользователя и пароля при каждом запросе является плохой практикой, я хочу получить некоторый токен (скажем, 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 Сервер и авторизация
Сервер (в моем случае это кажется неприемлемым). - написание пользовательских фильтров, ручное извлечение токена и т. д.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ring-secur
Мобильная версия