Solutions for Weblogic's basic authentication

来源:互联网 发布:php的二次开发 编辑:程序博客网 时间:2024/06/05 15:31

背景

最近部署在很多台机器上的脚本忽然不能使用curl来连接我们的application,然后返回的是401,主要是因为升级了容器,升级成Weblogic 12C的缘故, Weblogic Server会对请求做拦截,其实这个请求根本没有到application,而是在weblogic这层就被打回来,考虑到机子很多,所以打算在weblogic这边做一些修改,但是之前就没了解过weblogic,这两天看的也是头疼,主要这容器太重了。

https://docs.oracle.com/middleware/1221/wls/SCPRG/thin_client.htm#SCPRG150
查找Understanding BASIC Authentication with Unsecured Resources就可以直接定位。
这个是官方对其描述和官方提供的方法,但是这个方法的影响是全局的,所以我翻了蛮多文档,没其他的方法,都是官方提供的这个,官方也没有提供其他的方案。

先讲讲官方的做法吧。

Solution One

主要是改个配置文件 $oracle_home/config/config.xml
将这个

<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>

加到</security-configuration>前面,像图片那样。
这里写图片描述

最后将所有server都重启就可以。

Solution Two

由于官网那句话提到WebLogic Server must therefore have knowledge of the user and password.
我就尝试在weblogic 里面加了个一模一样的账户,结果通过了,这个网上还没由看到谁是这么弄。

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

最后点击OK就可以,不需要重启。

这么做的影响就是给这个用户在weblogic’s basic authentication开了个通道,但是其实影响也不大,因为还有application level的验证。

还有可能还有其他关于你增加用户会遇到的问题,密码不符合weblogic的规范,weblogic默认规定是密码要最少8位,最少包含1个数字或特殊字符,密码长度和特殊字符,也是可以在console 修改。
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

点击完Activate Changes之后就可以,不需要重启。

需要说明的是,你修改很多配置都要点击Lock&Edit, 如果你的console页面左上角没有这个,证明你这个用户是没有修改的权限的。

这里写图片描述

Solution Three
在client端的请求,只要你的spring security这些配置对你像请求的URL做权限控制,这些就会触发HTTP Basic Authentication, 具体weblogic里的机制我也不清楚,实验结果是只能模拟浏览器行为,先post 表单登陆,然后拿到 Session ID 放到cookie里去访问。

cat /dev/null > test.log//这里是你from表单提交的URL,不是login页面curl -c test.log -s -d "username=xxx&password=xxx" http://xxx > /dev/nullcurl -b test.log --connect-timeout 30 -s http://xxxxx
原创粉丝点击