2016-01-21 62 views
0

我在WebLogic Application Server 12中部署了基于REST的服务,该服务使用Spring Security进行使用BASIC身份验证的身份验证。以前我发现WebLogic有一个错误,如果请求中有Authorization标头,它会拦截一个调用。401在WebLogic上通过HttpClient进行身份验证时返回

我发现了一个非常有用的链接,它通过在WebLogic的config.xml中禁用<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>来解决此问题。现在,如果我通过POSTMan访问我的服务,它将非常有效,Spring可以处理安全问题。

在此之后,我编写了一些使用Apache Common HttpClient库来调用我的服务的自动化测试,但我不断从WebLogic获取401 Unauthorized。我的客户代码如下:

httpClient = new HttpClient(); 
     httpClient.getState().setCredentials(
      new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), 
      new UsernamePasswordCredentials(
        getTestUsername(config.getUsername()), 
        getTestPassword(config.getPassword())) 
      ); 

我试图把AUTH PREF为基本,将授权头了我的请求,甚至设置身份验证,以Preemptoive到真正的一切仍然是相同的。

我确信有一件事是Weblogic以某种方式拦截来自Java Standalone客户端的呼叫!因为在响应头文件中,我得到'realm:weblogic',这是不正确的,因为它应该是'realm:Spring Security Application',更奇怪的是我能够使用相同的安全证书从POSTMan访问相同的URL。我错过了什么?

回答

相关问题