缺少授权类型错误,当使用 Spring Security Oauth2 从刷新令牌生成新令牌时

时间:2021-01-28 05:09:40

标签: java spring spring-security-oauth2

我正在尝试从刷新令牌生成新令牌。

我正在使用 spring Rest Template 进行 rest 调用,如下所示。

    String clientCredentials = "Client Id value here + ":" + " Client Secret value here";
    String encodedCredentials = new 
    String(Base64.getEncoder().encodeToString(clientCredentials.getBytes()));    
    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON_UTF8));
    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
    headers.add("Authorization", "Basic " + encodedCredentials);
    HttpEntity<String> req = new HttpEntity<String>(headers);
    Map<String, Object> parametersMap = new HashMap<>(); 
    parametersMap.put("grant_type",  "refresh_token");
    parametersMap.put("REFRESH_TOKEN", "<refreshToken Value here>");
    
    UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl(accessTokenUrl)
                    .queryParam("client_id", "<Client Id value>")
                    .queryParam("client_secret", "<Client Secret value>")
                    .build();
                    
    ResponseEntity<OAuthToken> resp = restTemplate.exchange(uriComponents.toUriString(), HttpMethod.POST, req, OAuthToken.class, parametersMap);

我低于异常 2021-01-28 09:27:35,474 WARN [org.springframework.security.oauth2.provider.endpoint.TokenEndpoint] (default task-29) () Handling error: InvalidRequestException, Missing grant type 2021-01-28 09:27:35,475 DEBUG [org.springframework.security.web.context.SecurityContextPersistenceFilter] (default task-29) () SecurityContextHolder now cleared, as request processing completed 2021-01-28 09:27:35,476 ERROR [io.undertow.request] (default task-29) UT005023: Exception handling request to /oauthApp/oauth/token: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is error="invalid_request", error_description="Missing grant type" at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:901) at javax.servlet.http.HttpServlet.service(HttpServlet.java:706) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:875) at javax.servlet.http.HttpServlet.service(HttpServlet.java:791) at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)

在扩展 AuthorizationServerConfigurerAdapter 的类的服务器端,我有以下代码。

 @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.inMemory().withClient("client_id")
        .secret("client_secret")
        .authorizedGrantTypes("authorization_code", "refresh_token", "password", "client_credentials","implicit");
        clients.withClientDetails(clientDetailService);
    }

0 个答案:

没有答案