2017-03-23 95 views
0

利用CXF和需要以下安全头,包括用户名令牌(无密码)和的SecurityContextToken:SOAP安全标头的UsernameToken和的SecurityContextToken - CXF

 <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
     <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="123"> 
      <wsse:Username>USER</wsse:Username> 
     </wsse:UsernameToken> 
     <wsc:SecurityContextToken xmlns:wsc="http://schemas.xmlsoap.org/ws/2005/02/sc"> 
      <wsc:Identifier>TOKEN</wsc:Identifier> 
     </wsc:SecurityContextToken> 
    </wsse:Security> 

试图用行动WSHandlerConstants.USERNAME_TOKEN_NO_PASSWORD并把它放在WSS4JOutInterceptor但CXF抛出“定义未知操作:UsernameTokenNoPassword”异常。

如何将这两个元素放到标题中?

回答

1

错误是由https://issues.apache.org/jira/browse/WSS-604(我刚刚修复)引起的。

+0

谢谢,Colm。关于SecurityContextToken是什么,是否可以通过WSHandler添加它? – Misha

+0

不直接。您可以通过一个“CustomToken”操作来添加它,该操作从CallbackHandler中获取一个标记。 –

+0

我无法在WSSecurityUtil中找到CustomToken动作,因此,如果我将其添加为props.put(WSHandlerConstants.ACTION,WSHandlerConstants.CUSTOM_TOKEN)之类的动作,则会发生异常“定义未知操作:CustomToken”; – Misha