我正在尝试从刷新令牌生成新令牌。
我正在使用 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);
}