You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataPower的Client To Server规则中移除wsse:BinarySecurityToken

在DataPower Client To Server规则中移除wsse:BinarySecurityToken节点的可行性与实现建议

可行性结论

完全可行,DataPower支持通过XSLT转换或GatewayScript对SOAP报文进行节点移除操作,完全适配你需要的Client To Server流量拦截修改场景。

具体实现方案

方案1:XSLT转换(XML场景首选)

创建XSLT样式表定位并移除目标节点,在Client To Server规则中添加「XSLT转换」动作关联该样式表即可。

示例XSLT代码:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <!-- 复制所有节点与属性 -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!-- 移除wsse:BinarySecurityToken节点 -->
    <xsl:template match="wsse:BinarySecurityToken"/>
</xsl:stylesheet>

方案2:GatewayScript(复杂逻辑场景适用)

若需更灵活的处理逻辑,可编写GatewayScript脚本通过DOM操作移除节点:

示例GatewayScript代码:

var doc = session.input.readAsXML();
// 定位wsse:BinarySecurityToken节点
var tokenNodes = doc.evaluate("//wsse:BinarySecurityToken", doc, function(prefix) {
    if (prefix === "wsse") {
        return "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
    }
    return null;
}, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);

// 遍历移除所有匹配节点
for (var i = 0; i < tokenNodes.snapshotLength; i++) {
    var node = tokenNodes.snapshotItem(i);
    node.parentNode.removeChild(node);
}

session.output.write(doc);

配置注意事项

  • 转换动作需放在流量转发步骤之前,确保修改后的报文发送至后端。
  • 严格匹配命名空间:XSLT或GatewayScript中的wsse命名空间必须与报文中的完全一致,否则无法定位节点。
  • 先测试再部署:在测试环境验证修改后的报文结构,确认wsse:BinarySecurityToken已移除且其他节点(如wsse:UsernameToken)正常保留,再推到生产环境。

内容的提问来源于stack exchange,提问作者Erhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 10:22:43