#java #spring-security #oauth-2.0 #oauth #spring-security-oauth2
#java #spring-безопасность #oauth-2.0 #oauth #spring-security-oauth2
Вопрос:
Я внедрил сервер Spring Oauth 2 и добавил авторизацию к одному из своих сервисов. Я хочу понять, когда я нажимаю :
localhost:9191/oauth/token?grant_type=passwordamp;username=krishamp;password=kpass
Я получаю такой ответ :
{
"access_token": "24a20377-2ce7-4c6c-a65c-87adf443854b",
"token_type": "bearer",
"refresh_token": "39da80da-83bb-49e1-8e6a-8432428637ad",
"expires_in": 59,
"scope": "READ WRITE"
}
и я использую тот же access_token для аутентификации моего клиента следующим образом :
localhost:8080/getName
Adding header :
Authorization : bearer 24a20377-2ce7-4c6c-a65c-87adf443854b
Итак, мой вопрос: через 60 секунд (время истечения срока действия), как мой клиент получит новый токен с помощью токена обновления? (Я предполагаю, что клиент находится в том же сеансе).
Обрабатывает ли spring его внутренне со своими библиотеками или что-то, что нам нужно добавить на сервер?
Пожалуйста, помогите!
Ответ №1:
Клиент отправит сообщение о предоставлении токена обновления, как описано в этой статье . В OAuth гранты — это то, что дает вам токены:
- Вы реализовали предоставление пароля выше
- Большинство пользовательских интерфейсов используют предоставление кода авторизации после входа пользователя в систему
- Предоставление токена обновления используется для автоматического обновления, когда токены доступа истекают
Сообщения о предоставлении обычно всегда представляют собой запросы POST к конечной точке токена. Большинство людей используют готовый сервер авторизации, который обрабатывает их за вас, поэтому вам не нужно писать код самостоятельно.
Комментарии:
1. ТАКИМ образом, клиент автоматически попадет в HttpResponse<String> response = Unirest.post(» localhost:9191/oauth/token ) .header(«content-type», «application /x-www-form-urlencoded») .body(«grant_type=refresh_tokenamp;client_id=mobileamp;client_secret=pinamp;refresh_token=REFRESH_TOKEN) .asString(); когда срок действия токена истек? и получить новый токен?
2. Да — обычно клиент получает ответ 401 от API, когда истекает токен доступа. Затем клиент отправит вышеупомянутое сообщение о предоставлении токена обновления, чтобы получить новый токен доступа, а затем повторит вызов API. Вот несколько примеров клиентского кода .