Как получить токен весной при загрузке 2 oauth2? - PullRequest
0 голосов
/ 11 декабря 2018

Я новичок в весенней безопасности oauth2.Я хочу запустить этот пример кода сервера авторизации .Я запускаю его успешно, для получения токена я устанавливаю почтальон следующим образом и затем отправляю запрос:

Basic Auth grant types

ВВ этом случае я ввел идентификатор клиента с его паролем, но я хочу войти без них.Например, мои пользователи отправляют имя пользователя, пароль и идентификатор клиента, а затем получают токен.Но на каждый запрос я отправляю, сервер возвращает 401 ответ.В Spring boot 2 oauth 2, Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Спецификация OAuth 2.0 описывает ряд грантов («методов») для клиентского приложения для получения токена доступа (который представляет собой разрешение пользователя на доступ клиента к своим данным).

Предопределенный Spring OAuth2типы предоставления:

  • ClientCredentialsTokenGranter
  • RefreshTokenGranter
  • AuthorizationCodeTokenGranter
  • ImplicitTokenGranter
  • ResourceOwnerPassword, который itGenterвы используете в качестве примера)

Если вы хотите изменить логику получения токена, вы можете воспользоваться пользовательской TokenGranter .

Дополнительно:

Руководство по разработке OAuth 2

0 голосов
/ 28 февраля 2019

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=*" \

с Basic Auth и учетными данными вашего приложения (вы можете избежатьсекрет если хочешь).Имя пользователя и его пароль, который вы должны передать в теле запроса, а также значение «пароль» в поле 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) Затем вы можете использовать этот токен доступа для получения доступа к ресурсам вашего серверного приложения.В этом случае вам понадобится Bearer Token тип аутентификации и ваш токен доступа:

curl -X GET http://localhost:8080/demo \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2VtYWlsIjoidXNlckBtYWlsLmNvbSIsInVzZXJfbmFtZSI6InVzZXIiLCJzY29wZSI6WyIqIl0sImV4cCI6MTU0Nzc2NDIzOCwiYXV0aG9yaXRpZXMiOlsiQURNSU4iXSwianRpIjoiYzk1YzkzYTAtMThmOC00OGZjLWEzZGUtNWVmY2Y1YWIxMGE5IiwiY2xpZW50X2lkIjoiY2xpZW50In0.RWSGMC0w8tNafT28i2GLTnPnIiXfAlCdydEsNNZK-Lw'

3) Чтобы обновить токен , вы должны снова использовать Basic Auth сучетные данные клиента, но в этом случае вам нужен «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'

Каждый раз, когда истекает токен доступа, вы должны обновить его с помощью 3-го запроса.Тогда вы сможете снова получить доступ к ресурсам.

Дополнительная информация

1) Мой ответ о том, как создать простое приложение OAuth2 с помощью JWTи пользовательские заявки

2) Связанное демонстрационное приложение

3) Связанная коллекция Почтальона

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...