Этот проект является примером использования SpringBoot2 и spring-security-oauth2. Реализованы следующие четыре модели авторизации.
(1) Модель кода авторизации (Authorization Code)
(2) Упрощенная модель кода авторизации (Implicit)
(3) Модель Pwd (Resource Owner Password Credentials)
(4) Модель Client (Client Credentials)
Все пользователи и клиенты в проекте имеют пароль 123456.
Импортируйте oauth2.sql
Измените данные источника в application.yml
Запустите
mvn spring-boot:run
http://localhost:8080/user/info
Получено сообщение о необходимости аутентификации:
<oauth>
<error_description>
Полная аутентификация требуется для доступа к этому ресурсу
</error_description>
<error>
unauthorized
</error>
</oauth>
http://localhost:8080/oauth/authorize?client_id=client_3&response_type=code&scope=read&redirect_uri=http://localhost:8080/code?client_id=client_3
Здесь появляется HTTP Basic аутентификация, которую должен пройти пользователь для получения кода.
username=user_1
password=123456
Имя пользователя и пароль передаются основному фильтру SpringSecurity для аутентификации.
В коде используется restTemplate для отправки запроса на сервер аутентификации для получения токена, используя код. В результате получается access_token.
```json
{
"access_token":"5db93d64-2252-4349-90a3-e4d6637f90ae",
"refresh_token":"5a67faae-38ed-4e5c-a809-c9d07c16abcb",
"scope":"read",
"token_type":"bearer",
"expires_in":42494
}
http://localhost:8080/user/info?access_token=5db93d64-2252-4349-90a3-e4d6637f90ae
Получено нормальное возвращаемое значение
{
"password":null,
"username":"user_1",
"authorities":[{"authority":"ROLE_USER"}],
"accountNonExpired":true,
"accountNonLocked":true,
"credentialsNonExpired":true,
"enabled":true
}
Основное отличие имплицитного режима от режима кода авторизации заключается в том, что имплицитный режим не требует проверки client_secret
. Если запрос успешен, то сразу возвращается токен.
Получение токена:
http://localhost:8080/oauth/authorize?response_type=token&client_id=client_4&scope=read&redirect_uri=http://localhost:8080/param
Если запрос успешен, то происходит перенаправление на URL (токен содержится в URL):
http://localhost:8080/param#access_token=85090391-2c33-4a75-a989-116bb06b0c5a&token_type=bearer&expires_in=42962&scope=read
Запрос на получение токена доступа:
http://localhost:8080/oauth/token?username=user_1&password=123456&grant_type=password&scope=read&client_id=client_1&client_secret=123456
```Успешный ответ:
```json
{
"access_token":"fb1a1d03-9658-4d92-822a-d988c9f7a923",
"token_type":"bearer",
"expires_in":43148,
"scope":"read"
}
Запрос на получение токена доступа:
http://localhost:8080/oauth/token?grant_type=client_credentials&scope=read&client_id=client_1&client_secret=123456
Успешный ответ:
{
"access_token": "fb1a1d03-9658-4d92-822a-d988c9f7a923",
"token_type": "bearer",
"expires_in": 42811,
"scope": "read"
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )