поток кода авторизации spring oauth2, настройка для VK (Вконтакте)

#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 = имя токена, в моем случае он вызывает код) и использует для получения токена доступа.

Надеюсь, это будет полезно, люди сталкиваются с той же проблемой