我用microservices架构实现了一个简单的系统,在我的系统中,大约有5个microservice示例,它们作为资源服务器工作。资源服务器和授权服务器之间的通信是通过遵循oauth密码流的非对称方法完成的。
当用户通过web门户模块注册或登录系统调用服务时,我必须返回一个包含电子邮件和访问令牌的响应,该响应应保存在本地存储器中。
当我打电话的时候 http://localhost:9098/oauth/token
然后发生以下错误。
org.springframework.security.oauth2.client.resource.OAuth2AccessDeniedException: Unable to obtain a new access token for resource 'null'. The provider manager is not configured to support it.
应用程序.yml
security:
oauth2:
client:
grant-type: password
client-id: web
client-secret: 14292
access-token-uri: http://127.0.0.1:9098/oauth/token
配置类
@Configuration
public class WebPortalConfig {
@Bean
@ConfigurationProperties("security.oauth2.client")
public ClientCredentialsResourceDetails oAuthDetails()
{
return new ClientCredentialsResourceDetails();
}
@Bean
public RestTemplate restTemplate()
{
return new OAuth2RestTemplate(oAuthDetails());
}
}
oauthdetails类
@Getter
@Setter
public class OAuthDetails {
private String access_token;
private String token_type;
private String refresh_token;
private int expires_in;
}
服务等级
private OAuthDetails getOAuthDetails()
{
String url="http://127.0.0.1:9098/oauth/token?grant_type=password&username=nafazbenzema@gmail.com&password=benz";
return restTemplate.getForObject(url, OAuthDetails.class);
}
p、 s码-
如何克服这个错误?
这个方法是正确的还是错误的,如果你有更好的方法请建议作为答案
1条答案
按热度按时间rkkpypqq1#
我在以前的代码中发现了另一种方法和一些错误。
错误01
已为创建bean示例
ClientCredentialsResourceDetails
但我用的是password flow
.我会把我的答案贴出来
access_token
响应使用password flow
在OAUTH2
.应用程序.yml
属性类
customeauthenticationprovider类
服务等级