OAUTH error="access_denied", error_description="请求访问令牌时出错。尝试访问令牌时

时间:2021-02-18 13:05:37

标签: spring-security oauth-2.0 access-token access-denied

我写的代码:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.client.DefaultOAuth2ClientContext;
import org.springframework.security.oauth2.client.OAuth2RestOperations;
import org.springframework.security.oauth2.client.OAuth2RestTemplate;
import org.springframework.security.oauth2.client.resource.OAuth2ProtectedResourceDetails;
import org.springframework.security.oauth2.client.token.AccessTokenRequest;
import org.springframework.security.oauth2.client.token.DefaultAccessTokenRequest;
import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableOAuth2Client;

@EnableOAuth2Client
@Configuration
public class OAuth2SecurityConfig {

private static Logger logger = LoggerFactory.getLogger(OAuth2SecurityConfig.class);

@Value("${tokenUrl}")
private String tokenUrl;

@Value("${oauthClientId}")
private String oauthClientId;

@Value("${oauthClientPassword}")
private String oauthClientPassword;

@Value("${oauthGrantType}")
private String oauthGrantType;

@Bean
protected OAuth2ProtectedResourceDetails resourceDetails() {
    logger.info("inside resourceDetails");
    ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails();
    resourceDetails.setAccessTokenUri(tokenUrl);
    resourceDetails.setClientId(oauthClientId);
    resourceDetails.setClientSecret(oauthClientPassword);
    resourceDetails.setGrantType(oauthGrantType);
    logger.info("resourceDetails: "+ resourceDetails.toString());
    logger.info("resourceDetails: "+ resourceDetails.getAccessTokenUri());
    return resourceDetails;
}

@Bean
public OAuth2RestOperations restTemplateToken() {
    logger.info("inside restTemplateToken");
    AccessTokenRequest request = new DefaultAccessTokenRequest();
    return new OAuth2RestTemplate(resourceDetails(), new DefaultOAuth2ClientContext(request));      
}

}

在自动装配 OAuth2RestOperations 后,我在其中访问令牌的文件我给了这一行以获取它:

@Autowired
private OAuth2RestOperations restTemplateToken;

里面的方法......

OAuth2AccessToken accessToken = restTemplateToken.getAccessToken();

当我执行它时,我收到如下错误:

error="access_denied", error_description="请求访问令牌时出错。"

不知道为什么会失败。请帮忙。 谢谢。

0 个答案:

没有答案