[英]Basic Auth with WSS4J / camel cxf (Https)
對於SOAP Web服務,我有一個通過camel-cxf
和WSS4J
進行PasswordDigest
身份驗證的配置WSS4J
:
<camel-cxf:cxfEndpoint id="myService"
address="${ws.endpoint.address}"
serviceName="es:MyService"
wsdlURL="wsdl/myservice.wsdl"
endpointName="es:MyServicePort"
serviceClass="com.us.MyServiceEndpoint"
xmlns:es="http://us.com/services/MyService">
<camel-cxf:inInterceptors>
<bean class="org.apache.cxf.ws.security.wss4j.PolicyBasedWSS4JInInterceptor">
<property name="properties">
<map>
<entry key="action" value="UsernameToken"/>
<entry key="passwordType" value="PasswordDigest"/>
<entry key="passwordCallbackRef" value-ref="myPasswordCallback"/>
</map>
</property>
</bean>
</camel-cxf:inInterceptors>
</camel-cxf:cxfEndpoint>
我們要求為BASIC身份驗證啟用相同的資源-如何修改此配置才能做到這一點?
我更改了以下行並通過SOAP UI進行了測試:
<entry key="passwordType" value="PasswordText"/>
但是,結果是來自UsernameTokenValidator.java
的SOAP錯誤:
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>These policy alternatives can not be satisfied:
{http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}
UsernameToken: Password hashing policy not enforced</faultstring>
</soap:Fault>
如果有人在這里有一些指導,將不勝感激。
您正在混淆在CXF中配置WS-Security的兩種不同方式。
當您具有用於配置安全性的WS-SecurityPolicy時,將使用“ PolicyBasedWSS4JInInterceptor”。 您根本不需要實際添加它,因為CXF會自動將其添加到攔截器鏈中。 通過此處指定的配置標簽進行配置: http : //cxf.apache.org/docs/ws-securitypolicy.html 。 對於安全策略,將忽略您指定為“屬性”的配置標簽。
如果在這種情況下要通過策略配置安全性,則要支持純文本密碼,則需要刪除“ HashPassword”策略。
如果只想通過“操作”進行配置,則應該使用“ WSS4JInInterceptor”(基於策略的攔截器進行擴展)。
科爾姆
需要將WSS-PasswordType從PasswordText
更改為PasswordDigest
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.