Я новичок в весенней безопасности oauth2. Я хочу запустить этот пример кода сервера авторизации. Я запускаю его успешно, чтобы получить токен, я установил почтальона следующим образом, а затем отправил запрос:
В этом случае я ввел идентификатор клиента с его паролем, но я хочу войти без них. Например, мои пользователи отправляют имя пользователя, пароль и идентификатор клиента, а затем получают токен. Но каждый запрос, который я отправляю, сервер возвращает 401 ответ. В Пружинный ботинок 2 oauth 2, Как мне это сделать?
опубликуйте свой 401 ответ Почтальон снимок экрана здесь
{"timestamp": "2018 ...", "status": 401, "error": "Unauthorized", "message": "Unauthorized", "path": "/ oauth / token"}
Что ты имеешь ввиду под but i want to login without theme?
Без идентификатора клиента и секрета клиента.
Как вы планируете проверять клиента без учетных данных? Как настроен ваш клиент?
Я хочу, чтобы пользователи отправляли собственное имя пользователя и пароль с помощью ajax на сервер авторизации и получали токен.




1) К получить токен доступа нужно использовать такой запрос:
curl --user client:secret \
-X POST http://localhost:8080/oauth/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=password&username=username&password=password&scope=*" \
с Базовая аутентификация и учетными данными вашего приложения (вы можете избежать секрета, если хотите). Имя пользователя и его пароль, которые вы должны передать в теле запроса, а также значение «пароль» в поле grant_type.
В ответ вы получите доступ и обновите токены, например:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2VtYWlsIjoidXNlckBtYWlsLmNvbSIsInVzZXJfbmFtZSI6InVzZXIiLCJzY29wZSI6WyIqIl0sImV4cCI6MTU0Nzc2NDIzOCwiYXV0aG9yaXRpZXMiOlsiQURNSU4iXSwianRpIjoiYzk1YzkzYTAtMThmOC00OGZjLWEzZGUtNWVmY2Y1YWIxMGE5IiwiY2xpZW50X2lkIjoiY2xpZW50In0.RWSGMC0w8tNafT28i2GLTnPnIiXfAlCdydEsNNZK-Lw",
"token_type": "bearer",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2VtYWlsIjoidXNlckBtYWlsLmNvbSIsInVzZXJfbmFtZSI6InVzZXIiLCJzY29wZSI6WyIqIl0sImF0aSI6ImM5NWM5M2EwLTE4ZjgtNDhmYy1hM2RlLTVlZmNmNWFiMTBhOSIsImV4cCI6MTU0Nzc2NzcxOCwiYXV0aG9yaXRpZXMiOlsiQURNSU4iXSwianRpIjoiZDRhNGU2ZjUtNDY2Mi00NGZkLWI0ZDgtZWE5OWRkMDJkYWI2IiwiY2xpZW50X2lkIjoiY2xpZW50In0.m7XvxwuPiTnPaQXAptLfi3CxN3imfQCVKyjmMCIPAVM",
"expires_in": 119,
"scope": "*"
"jti": "c95c93a0-18f8-48fc-a3de-5efcf5ab10a9"
}
2) Затем вы можете использовать этот токен доступа к получить доступ к ресурсам вашего серверного приложения. В этом случае вам понадобится тип авторизации Жетон на предъявителя и ваш токен доступа:
curl -X GET http://localhost:8080/demo \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2VtYWlsIjoidXNlckBtYWlsLmNvbSIsInVzZXJfbmFtZSI6InVzZXIiLCJzY29wZSI6WyIqIl0sImV4cCI6MTU0Nzc2NDIzOCwiYXV0aG9yaXRpZXMiOlsiQURNSU4iXSwianRpIjoiYzk1YzkzYTAtMThmOC00OGZjLWEzZGUtNWVmY2Y1YWIxMGE5IiwiY2xpZW50X2lkIjoiY2xpZW50In0.RWSGMC0w8tNafT28i2GLTnPnIiXfAlCdydEsNNZK-Lw'
3) Для обновить токен вы должны снова использовать базовую аутентификацию с учетными данными клиента, но в этом случае вам понадобится «refresh_token» как grant_type:
curl --user client:secret \
-X POST http://localhost:8080/oauth/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=refresh_token&scope=*&refresh_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2VtYWlsIjoidXNlckBtYWlsLmNvbSIsInVzZXJfbmFtZSI6InVzZXIiLCJzY29wZSI6WyIqIl0sImF0aSI6ImM5NWM5M2EwLTE4ZjgtNDhmYy1hM2RlLTVlZmNmNWFiMTBhOSIsImV4cCI6MTU0Nzc2NzcxOCwiYXV0aG9yaXRpZXMiOlsiQURNSU4iXSwianRpIjoiZDRhNGU2ZjUtNDY2Mi00NGZkLWI0ZDgtZWE5OWRkMDJkYWI2IiwiY2xpZW50X2lkIjoiY2xpZW50In0.m7XvxwuPiTnPaQXAptLfi3CxN3imfQCVKyjmMCIPAVM'
Каждый раз, когда срок действия токена доступа истекает, вы должны обновлять его с помощью третьего запроса. Тогда вы снова сможете получить доступ к ресурсам.
Дополнительная информация
1) Мой ответ как создать простое приложение OAuth2 с JWT и настраиваемыми утверждениями
Спецификация OAuth 2.0 описывает ряд грантов («методов») для клиентского приложения для получения токена доступа (который представляет собой разрешение пользователя для клиента на доступ к своим данным).
Предопределенные типы грантов Spring OAuth2:
Если вы хотите изменить логику получения токенов, вы можете использовать собственный TokenGranter.
Дополнительный:
пожалуйста, опубликуйте свои WebSecurityConfigurerAdapter и AuthorizationServerConfigurerAdapter