Доступ к данным пользователя после входа в Spring Boot OAuth2 Client - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь создать клиент OAuth2, используя весеннюю загрузку для доступа к пользовательскому API.

Вот мой код:

@SpringBootApplication
public class MyClient {
    public static void main(String[] args){
        SpringApplication.run(MyClient.class, args);
    }
}
@Configuration
@EnableOAuth2Sso
public class ApplicationSecurity extends WebSecurityConfigurerAdapter{
    @Override
    protected void configure(HttpSecurity http) throws Exception{
        http.antMatcher("/**")
        .authorizeRequests().antMatchers("/","/callback","/login**","/error**")
        .permitAll().anyRequest().authenticated();
    }
}
@RestController
public class HomeController {
    @RequestMapping("/user")
    public String login() {
        String userInfoJson = "get data returned from API somehow";
        return userInfoJson;
    }

    @RequestMapping("/callback")
    public void callback(HttpServletResponse response) {
        response.sendRedirect("/user");
    }
}

У меня естьсоздал файл application.yml со всеми необходимыми свойствами, и процесс входа в систему работает отлично, возвращая поток в / callback после успешного входа в систему.

В этот момент я должен был получить токен, который я могу использовать для полученияданные пользователя с сервера.

Как я могу получить доступ к этому токену?

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

Спасибо

1 Ответ

0 голосов
/ 04 июня 2019

из документации

Клиент OAuth2 можно использовать для получения сведений о пользователе от поставщика (если такие функции доступны), а затем преобразовать их в токен аутентификации для Spring Security.

Сервер ресурсов, описанный выше, поддерживает это через свойство user-info-uri. Это основа для протокола единого входа (SSO) на основе OAuth2, а Spring Boot упрощает участие, предоставляя аннотацию @EnableOAuth2Sso.

Вышеуказанный клиент Github может защитить все свои ресурсы и аутентифицироваться с помощью Github / user / endpoint, добавив эту аннотацию и объявив, где найти конечную точку (в дополнение к конфигурации security.oauth2.client. *).перечисленные выше):

application.yml.

security:
    oauth2:
...
    resource:
        userInfoUri: https://api.github.com/user
        preferTokenInfo: false

Так как вы можете прочитать, это должно быть сделано автоматически, если вы задаете, откуда будет извлекаться информация о пользователе, а затем она будет заполняться.

Когда заполнен токен аутентификацииВы можете извлечь это из контекста безопасности несколькими различными способами.

@RequestMapping("/callback")
public void callback(Authentication authentication) {
    final String name = authentication.getName();
    response.sendRedirect("/user");
}

Если вы хотите получить доступ к сырому json, вам, вероятно, придется заставить остальных звонить самому.Если вы хотите добавить пользовательские значения в объект аутентификации, вам нужно реализовать собственный класс UserDetails.

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