我在WebLogic Application Server 12中部署了基于REST的服务,该服务使用Spring Security通过BASIC Auth进行身份验证。以前,我发现WebLogic有一个错误,即如果请求中包含Authorization标头,它就会拦截呼叫。
我找到了一个非常有用的链接,该链接通过<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>
在WebLogic的config.xml中禁用此链接来解决此问题。现在,如果我通过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设置为Basic,甚至将auth设置为Preemptoive都将Authorization标头添加到我的请求中,以使所有内容保持不变。
我敢肯定,一件事是Weblogic正在以某种方式拦截来自Java Standalone客户端的呼叫!因为在响应标头中,我得到“领域:weblogic”,这是不正确的,因为它应该是“领域:Spring Security Application”,更奇怪的是,我能够使用相同的安全凭证从POSTMan访问相同的URL。我有什么想念的吗?
是的,我确认Weblogic拦截了您的电话。
您必须<enforce-valid-basic-auth-credentials>
在weblogic config.xml文件中将标记强制设置为false。
请查看将force-valid-basic-auth-credentials添加到config.xml和http://www.dba-oracle.com/t_weblogic_bypass_basic_authentication.htm的错误
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句