我正在尝试创建一个策略xml来保护我的代理服务。我举了一个类似这样的策略xml示例,但我无法将用户添加到用户组中。当我给出策略的url时,它标记为安全性,但如果你查看属性,安全性的类型是usernameToken,但用户组是空的。
<wsp:Policy wsu:Id="UTOverTransport" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false"></sp:HttpsToken>
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:Basic256></sp:Basic256>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax></sp:Lax>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp></sp:IncludeTimestamp>
</wsp:Policy>
</sp:TransportBinding>
<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:UsernameToken xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy" sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens>
</wsp:All>
</wsp:ExactlyOne>
<rampart:RampartConfig xmlns:rampart="http://ws.apache.org/rampart/policy">
<rampart:encryptionUser>useReqSigCert</rampart:encryptionUser>
<rampart:timestampPrecisionInMilliseconds>true</rampart:timestampPrecisionInMilliseconds>
<rampart:timestampTTL>300</rampart:timestampTTL>
<rampart:timestampMaxSkew>300</rampart:timestampMaxSkew>
<rampart:timestampStrict>false</rampart:timestampStrict>
<rampart:tokenStoreClass>org.wso2.carbon.security.util.SecurityTokenStore</rampart:tokenStoreClass>
<rampart:nonceLifeTime>300</rampart:nonceLifeTime>
<rampart:user>admin</rampart:user>
<rampart:passwordcallbackclass>org.wso2.carbon.digestpwd.PWCBHandler</rampart:passwordcallbackclass>
</rampart:RampartConfig>
</wsp:Policy>
根据用户名令牌规范,它只讨论身份验证。将验证在用户名令牌中发送的用户/密码。它不讨论访问控制(RBAC)。因此,您不能在策略中定义角色。您只能使用此策略验证身份验证。。。
正如您所讨论的WSO2ESB,在ESB中,他们提供了一些修改,以支持对用户名令牌策略的访问控制。。他们扩展的地方是密码回调处理程序。在WSO2自定义密码处理程序中,它检查身份验证和访问控制。。您可以从这里找到WSO2密码处理程序的来源。我想,您可以使用ESB提供的管理控制台来保护代理服务。。在此管理控制台中,您可以配置用户名令牌安全策略,并可以定义允许的角色。。这些角色不保存在策略中,而WSO2ESB中的某些数据库具有这些角色。