Java angularjs,spring boot,spring security oauth2,只有从命令行启动应用程序时,授权才会失败
我有SpringBootUI服务器,其中包括Angular单页应用程序,我有第三方授权oauth2提供程序。我的spring boot应用程序重定向到登录oauth2提供程序页面,获取“代码”并获取访问令牌 我有两个问题:Java angularjs,spring boot,spring security oauth2,只有从命令行启动应用程序时,授权才会失败,java,angularjs,spring,spring-security,spring-security-oauth2,Java,Angularjs,Spring,Spring Security,Spring Security Oauth2,我有SpringBootUI服务器,其中包括Angular单页应用程序,我有第三方授权oauth2提供程序。我的spring boot应用程序重定向到登录oauth2提供程序页面,获取“代码”并获取访问令牌 我有两个问题: 我成功地获得了access_令牌,但无法获得userInfo,auth server respond 500(我没有权限到auth server调试某些东西,所以在响应中只得到了500个错误)。我找到了一个解决方案:只需像CustomUserInfoTokenServices
@Autowired
private ResourceServerProperties sso;
@Bean
public ResourceServerTokenServices myUserInfoTokenServices() {
return new CustomUserInfoTokenServices(sso.getUserInfoUri(), sso.getClientId());
}
}security:
oauth2:
client:
accessTokenUri: https://authserver/oauth/token
userAuthorizationUri: https://authserver/oauth/authorize
clientId: client
clientSecret: secret
resource:
userInfoUri: https://authserver/user/get?format=json
preferTokenInfo: false
这是非常奇怪,但它的工作!我不明白为什么标准配置不起作用
2016-02-24 13:16:50.378 DEBUG 4264 --- [nio-8080-exec-3] g.c.AuthorizationCodeAccessTokenProvider : Retrieving token from *****/oauth/token
2016-02-24 13:16:50.532 DEBUG 4264 --- [nio-8080-exec-3] g.c.AuthorizationCodeAccessTokenProvider : Encoding and sending form: {grant_type=[authorization_code], code=[160224ACS2gmbxvr1581], redirect_uri=[http://****/login]}
2016-02-24 13:16:50.907 DEBUG 4264 --- [nio-8080-exec-3] uth2ClientAuthenticationProcessingFilter : Authentication request failed: org.springframework.security.authentication.BadCredentialsException: Could not obtain access token
2016-02-24 13:16:50.907 DEBUG 4264 --- [nio-8080-exec-3] uth2ClientAuthenticationProcessingFilter : Updated SecurityContextHolder to contain null Authentication
因此,只有从命令行启动应用程序时,授权才会失败。可能spring boot fat jar打包无法正常工作?是否尝试验证打包的.jar文件是否包含应用程序设置文件?记住,一个.jar文件只是一个压缩的目录,所以您可以轻松地解压缩它并检查它。是的,打包的jar包含所有设置的application.yml文件!身份验证链中的第一个操作——重定向到oauth2服务器(auth服务器URL已经在application.yml中)登录页面,运行正常,但问题只是获取令牌。当我通过spring boot再次切换回启动应用程序时:run或run from NetBeans所有身份验证过程都会成功并获得访问权\u令牌