仅当应用程序从命令行

时间:2016-02-24 12:30:31

标签: java angularjs spring spring-security spring-security-oauth2

我有Spring-boot ui-server,其中包括Angular单页应用程序,我有第三方授权oauth2提供程序。我的spring-boot应用程序重定向到登录oauth2提供程序页面,得到"代码"并获取access_token。

我有两个问题:

  1. 我成功获得access_token但无法获取userInfo,auth服务器响应500(我没有访问auth服务器来调试某些内容,因此只有500响应错误)。我找到了一个解决方案:只需创建类ResourceServerTokenServices,就像CustomUserInfoTokenServices一样,并将Bean放入@Configuration类:

    @Configuration 公共课Conf {

    @Autowired
    private ResourceServerProperties sso;
    @Bean
    
    public ResourceServerTokenServices myUserInfoTokenServices() {
        return new CustomUserInfoTokenServices(sso.getUserInfoUri(), sso.getClientId());
    }
    

    }

  2. 安全属性:

    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
    

    这很奇怪,但它有效!我不明白为什么标准配置不起作用。

    1. 启动应用程序的下一个问题。
    2. a)从IDE开始 - 应用程序启动成功,安全性正常

      b)从命令行开始,通过" spring-boot:run" - 应用程序开始成功,安全性正常

      c)从" java -jar"开始从命令行开始 - 应用程序开始成功,但我得到了#34; 401 Unauthorized"并调用堆栈:

      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
      

      当从命令行启动应用程序时,授权仅 。也许弹簧靴脂肪罐包装不能正常工作?

0 个答案:

没有答案