cxf基于SAML版本的DefaultSecurityTokenServiceProvider响应

时间:2014-07-02 10:26:21

标签: java spring cxf x509certificate saml

我正在与CXF STS合作,并遇到了以下要求,我无法继续

1 CXF STS的DefaultSecurityTokenServiceProvider如何提供不同版本的SAML断言,例如1.1或2.0。我有一个假设。如果我错了,请纠正我。 DefaultSecurityTokenServiceProvider:services的bean属性

<property name="services" ref="myServiceList" />
<bean id="myServiceList" class="org.apache.cxf.sts.service.StaticService">
    <property name="endpoints" ref="wspAllowedEndpoints" />
</bean>
<util:list id="wspAllowedEndpoints">
    <value>http://localhost:8080/doubleit/services/doubleit.*</value>
</util:list>

它向wsdl请求所有允许的服务,读取策略元素

<sp:RequestSecurityTokenTemplate>
                          <t:TokenType>http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1</t:TokenType>
                          <t:KeyType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey</t:KeyType>
                          <t:KeySize>256</t:KeySize>
                       </sp:RequestSecurityTokenTemplate>

基于SAMLV1.1或SAMLV2.0,它确定响应中要发送的SAML断言版本

2如何从org.apache.cxf.ws.security.trust.STSClient作为文本

读取SAML断言
**saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Version="2.0" ID="s2b7afe8e21a0910d027dfbc94ec4b862e1fbbd9ab" IssueInstant="2007-12-10T11:39:48Z"**

所以我可以将它们放在标题中并使用SOAPUI作为客户端吗?

1 个答案:

答案 0 :(得分:0)

STS将默认发出SAML 1.1或2.0令牌,具体取决于发送的TokenType。因此,为了支持1.1 + 2.0,在STS配置方面不需要采取任何措施。

STSClient将返回一个SecurityToken对象。您可以通过stsClient.getToken()获取返回令牌的DOM表示形式。然后,您可以使用类似WSS4J的DOM2Writer.nodeToString(节点)转换为String。

科尔姆。