#spring #vk #spring-oauth2
#spring #vk #spring-oauth2
Вопрос:
Я использую социальную сеть Вконтакте в качестве сервера авторизации Oauth2. Итак, у меня есть несколько шагов: 1) получить код с запросом с помощью request_type=code 2) получить accessToken при отправке запроса на uri токена доступа
Итак, я хочу использовать Spring Oauth2, но сначала я должен получить код авторизации, а затем токен доступа, который я пытался добавить в application.yml :
authorized-grant-types: authorization_code
это мое приложение.yml:
security:
oauth2:
client:
clientId: [clientId]
clientSecret: [clientSecret]
accessTokenUri: https://oauth.vk.com/access_token
userAuthorizationUri: https://oauth.vk.com/authorize
tokenName: access_token
registered-redirect-uri: http://localhost:8080/login
resource:
token-info-uri: http://localhost:8080/user
но на самом деле это не помогает. Если кто-нибудь сталкивался с этим и знает, как настроить приложение Spring Oauth2 — буду благодарен за помощь
Комментарии:
1. Пожалуйста, опубликуйте более подробную информацию о ваших конфигурациях, зарегистрированных клиентах, отправленных запросах и всех соответствующих кодах
2. Возможно, я не понимаю, что вы подразумеваете под authorization_code, но authorization_code — это то, что вы создаете для своих пользователей без их аутентификации. Например, подумайте о том, когда вы выполняете сброс пароля. В этом сценарии вы должны сгенерировать код авторизации и отправить его пользователю по электронной почте. Токен доступа — это то, что пользователь получает за успешную аутентификацию, используя имя пользователя и пароль или код авторизации. Это огромное упрощение, но, надеюсь, оно немного проясняет ситуацию.
3. @Leon я обновил вопрос, я использую api сервера авторизации в социальной сети для получения кода, затем мне нужно получить токен доступа
4. я полностью согласен с этим руководством, мне нужно было уделить больше внимания расследованию: spring.io/guides/tutorials/spring-boot-oauth2 /…
Ответ №1:
На самом деле, после пары дней расследования я выяснил, что Spring OAuth2, полностью реализующий все функции и конфигурацию моего клиентского приложения, использует предоставление кода авторизации для получения токена доступа от Vkontakte (сервера авторизации)
Единственное, что мне нужно сделать, если я возьму в качестве примера Spring Boot и OAuth2 social login simple, — это заполнить приложение.yml с правильными учетными данными для моего сервера авторизации:
security:
oauth2:
client:
clientId: xxxxxxx
clientSecret: xxxxxxxxxxx
accessTokenUri: https://oauth.vk.com/access_token
userAuthorizationUri: https://oauth.vk.com/authorize
tokenName: code
authenticationScheme: query
clientAuthenticationScheme: form
grant-type: authorization_code
resource:
userInfoUri: https://api.vk.com/method/users.get
Единственной проблемой, с которой я столкнулся, было предоставление правильного имени токена и userInfoUri для получения зарегистрированной информации пользователя.
Согласно имени токена, это имя кода авторизации, которое вы получаете после прохождения авторизации (response_type = имя токена, в моем случае он вызывает код) и использует для получения токена доступа.
Надеюсь, это будет полезно, люди сталкиваются с той же проблемой