本文描述OSB Message-Level Custom Security的实现过程(demo)
1、创建test.wsdl文件,其中包括传递进来用于验证身份的用户名和密码:user,pwd
2、创建两个proxyservices:psSyncData.proxy和psStar.proxy
其中psSyncData.proxy主要用于处理业务逻辑和验证身份,psStar.proxy则是为psSyncData.proxy提供验证信息的信息提供者
对于psSyncData.proxy的设置如下:
1)在Message Flow中设置Routing,Routing的service指向psSyncData.proxy;
2)在Request Action中设置两个insert,向header变量中插入两个参数user和pwd,这俩参数会在psSyncData.proxy的security中被引用;
psSyncData.proxy需要做设置如下:
1)Service Type选择:Any Type SOAP Service
2)在security tab中,选择Custom User Name and Password并定义User Name/Password XPath,如下图:
3)在Mssage Flow中,调用业务处理所用的businessServices,并将Soap的header替换还原成正确的,否则可能会引起Internal Server Error
以上传入的用户名和密码是用weblogic进行验证的,因此用户名和密码需要预先在weblogic的安全域里设置好。
以上为Message -Level Custom Security的简单设置步骤
常见报错:
<soapenv:Fault> |
<faultcode>soapenv:Server</faultcode> |
<faultstring>BEA-386101: Missing authentication token</faultstring> |
<detail> |
原因为:在ProxyServices中设置的user和password与soap header中设置token不一致。
如在soap header中设置如下:
<soap:Header |
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> |
|
<pwd>12345678</pwd> |
|
<username>AAB</username> |
|
</soap:Header> |
在proxyServices中User Name XPath为:./user/text()
user和username不一致导致以上报错。