我喜欢使用通过用户名和密码进行身份验证的代理。所有通过 ESB 的消息都应该保存到数据库中,包括通过 ESB 身份验证的用户。有没有办法在代理中获取用户名?例如,我知道您可以获取消息 ID,但我找不到获取用户名的解决方案。
也许你可以帮助我:)
如果您使用 $header 访问标题信息,它就可以工作。只需获取 xPath 并提取用户名,如下例所示:
<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"/>
您可以使用用户名令牌(即:用户名/密码)保护代理。转到服务仪表板->安全选项,您可以找到启用用户名令牌的工具。如果你这样保护,在你的请求中你应该发送基本的身份验证头。
我认为您可以从此处的 ESB 文档中获得帮助 http://docs.wso2.org/wiki/display/ESB460/HTTP+Basic+Authentication+over+a+Proxy+Server
一旦代理服务获得安全用户名令牌或基本身份验证... 消息身份验证成功后,即可检索用户名。可以使用名为“用户名”的属性从轴 2 消息上下文中检索用户名。您可以使用属性中介(范围是axis2)或简单的类中介。