Весенняя загрузка OAuth 2 безопасности получить токен доступа из обновления обновить (если истек срок действия) - PullRequest
0 голосов
/ 20 ноября 2018

Я реализовал Spring Boot Oauth 2, он работает нормально, но когда я пытаюсь получить токен доступа (если срок его действия истек) из токена обновления, он выдаёт мне ошибку

{
    "error": "unauthorized",
    "error_description": "admin"
}

Журнал консоли

Handling error: UsernameNotFoundException, admin

Ниже мой код

1.WebSecurityConfigure

@Configuration
@EnableWebSecurity
public class EmployeeSecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/resources/**");
    }
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/").permitAll().antMatchers("/user/getEmployeesList")
            .hasAnyRole("USER").anyRequest().authenticated().and().formLogin()
            .permitAll().and().logout().permitAll();
        http.csrf().disable();
    }

    @Override
    public void configure(AuthenticationManagerBuilder authenticationMgr) throws Exception {
        authenticationMgr.inMemoryAuthentication().withUser("admin").password("admin")
            .authorities("ROLE_USER");
    ;
    }
}

2.AuthorizationServerConfigure

@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {

    @Autowired
    private AuthenticationManager authenticationManager;


     @Override
        public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
            security
                    .tokenKeyAccess("permitAll()")
                    .checkTokenAccess("isAuthenticated()")
                    .allowFormAuthenticationForClients();
        }

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.inMemory().withClient("MagicUser").authorizedGrantTypes("authorization_code", "refresh_token","password")
                .authorities("CLIENT").scopes("openid", "read", "write", "trust").resourceIds("oauth2-resource")
                .redirectUris("http://10.9.6.31:8090/showEmployees").accessTokenValiditySeconds(5000).secret("secret")
                .refreshTokenValiditySeconds(50000);

    }
    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints.authenticationManager(authenticationManager)
                .allowedTokenEndpointRequestMethods(HttpMethod.GET, HttpMethod.POST);
        ;
    }
}

Пожалуйста, помогите мне разобраться в этой проблеме

Запрос токена доступа (если истек)

    http://10.9.6.31:8091/oauth/token
    Body parameter
   grant_type=refresh_token
  refresh_token=78d2ab82-46a2-4b70-a9e8-e3f9e5ddfec6

1 Ответ

0 голосов
/ 20 ноября 2018

Возможно, вам потребуется отправить заголовок авторизации в запросе для аутентификации клиента. Проверьте Проверка подлинности клиента OAuth и Обновление спецификации токена доступа в спецификации OAuth 2.0.

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