WSO2 ESB获取认证名称

时间:2013-06-14 12:02:49

标签: security properties wso2 esb

我正在使用带有https身份验证的ESB代理。

如果我使用curl向此代理发送消息,我会收到此日志:

[2013-06-14 13:56:05,138]  INFO - LogMediator To: /services/Username, From: 127.0.0.1, Direction: request, Envelope: <?x
ml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="true">
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp17"><wsu:Created>2013-06-14T11:56:05.134Z</wsu:Created>
<wsu:Expires>2013-06-14T12:01:05.134Z</wsu:Expires>
</wsu:Timestamp>
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken16">
<wsse:Username>admin</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">admin</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

现在我想用Property-Mediator保存用户名。问题是我不知道表达式是怎样的。目前我有以下不工作的表达方式:

<property xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" name="user" expression="//soapenv:Envelope/soapenv:Header/wsse:Security/wsse:UsernameToken/wsse:Username" scope="transport" type="STRING"/>

获取用户名的正确表达方式是什么?

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用带有$ header的表达式来检索用户名,如下所示。

<property xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" name="user" expression="$header/wsse:Security/wsse:UsernameToken/wsse:Username"/>