Я читал статью о OAuth 2.0
с jwt
токенами.Интересная часть - когда автор описывает client_secret
, он говорит:
В нетривиальной реализации идентификаторы и пароли клиента будут надежно храниться в базе данных и извлекаться через отдельный API, к которому клиентские приложения обращаются во времяразвертывание.
Теперь предположим, что у меня есть приложение внешнего интерфейса на английском языке и весной приложение внутреннего интерфейса с базой данных MySQL.
У меня вопрос, что автор имел в виду под вышеупомянутой цитатой.Является ли это тем, что клиент (в данном случае приложение веб-интерфейса) выполняет вызов, используя client_id
и secret
(здесь ничего не меняется), но серверная часть проверяет предоставленные «учетные данные», а не сравнивает их со значениями, хранящимися в простом тексте (в *)1016 * в этом случае), но сделать хеш из полученных значений и сравнить с хешированной версией в db?
EDITED :
- Пользователь
john doe
открывает страницу log in
.Предоставляет учетные данные: username:john.doe
и password:john1
.Клики sign in
. - Angular-frontend перехватывает запрос и выполняет метод (например,
obtainTokenForUser()
), чтобы получить действительный для короткого периода токен jwt для пользователя.По этой причине angular-app отправляет OAuth2.0
-совместимый запрос на authorization server
.Перед отправкой контанта AWS KMS
необходимо получить его client_id
и secret
, чтобы прикрепить к запросуВ итоге запрос от angular к auth серверу выглядит так: curl front-app-sp3:frnt4pP@<auth_server_ip_addr>:<auth_server_port>/oauth/token -d grant_type=password -d username=john.doe -d password=john1
Authorization server
контакты AWS KMS
для полученных client_id:front-app-sp3
и client_secret:frnt4pP
.Он находит запись, пароли совпадает, проверка правильности.Auth server
генерирует действительный токен JWT, например, 5 minutes
.Токен подписывается сервером с использованием AS_pr1v4t3
закрытого ключа.Authorization server
возвращает токен в приложение angular. - Пользователь вошел в систему. Пользователь запрашивает ресурс в основном приложении (весной), поэтому angular добавляет полученный токен и отправляет запрос в «Main-web».Приложение ".
Resource server
в" Основном веб-приложении "проверяет токен.Токен правильный и действительный.Ресурс возвращается.