【问题标题】:cxf DefaultSecurityTokenServiceProvider response based on SAML version基于 SAML 版本的 cxf DefaultSecurityTokenServiceProvider 响应
【发布时间】:2014-07-02 10:26:20
【问题描述】:

我刚开始使用 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 作为客户端?

【问题讨论】:

    标签: java spring cxf x509certificate saml


    【解决方案1】:

    默认情况下,STS 将根据发送的 TokenType 颁发 SAML 1.1 或 2.0 令牌。因此,要同时支持 1.1 + 2.0,无需对 STS 配置进行任何操作。

    STSClient 将返回一个 SecurityToken 对象。您可以通过 stsClient.getToken() 获取返回令牌的 DOM 表示。然后,您可以使用 WSS4J 的 DOM2Writer.nodeToString(node) 之类的东西来转换为字符串。

    科尔姆。

    【讨论】:

    • 感谢 Colm 的回复。现在更清楚了。我还有一个疑问是,&lt;util:list id="wspAllowedEndpoints"&gt; &lt;value&gt;http://localhost:8080/doubleit/services/doubleit.*&lt;/value&gt; &lt;/util:list&gt; 这意味着不止一个服务提供商端点受 STS 保护。那么 STS 客户端如何传递它需要针对特定​​服务提供商策略的 SAML 断言。这就是 STS 客户端请求特定服务提供者端点的 SAML 断言的方式。一个假设是 STS 是客户端提供给具有属性&lt;entry key="ws-security.sts.client"&gt; 的 WS-Client。但是对于作为单个 bean 的 STS 客户端?
    • 也就是说,如果 wspAllowedEndpoints 有多个不同策略的服务,STS 可能需要客户端请求相应的特定 SAML 断言。那么如何实现呢?如果我在这里遗漏了什么,请更正
    • STSClient 可以向与您引用的列表匹配的 STS 发送“AppliesTo”URI。
    猜你喜欢
    • 1970-01-01
    • 2019-08-20
    • 2017-01-06
    • 2015-07-06
    • 1970-01-01
    • 2018-07-05
    • 2014-09-28
    • 2021-11-04
    • 2016-07-01
    相关资源
    最近更新 更多