1

我在 ADFS 中配置了 2 个依赖方信任(App1、App2),在用户按照 SAML Web 流程进行身份验证后,最终 App1 得到了一个 SAML 令牌:SamlToken1。

目前的情况是,用户的浏览器由于防火墙无法访问App2,所以App2无法获取SAML token。

我认为的解决方案是通过提供的 issuetokenmixedasymmetricbasic256sha256 Endpoint ADFS 使用 WS-Trust:

步骤 1. 使 App1 充当 WS-Trust 客户端,向 ADFS(端点发出tokenmixedasymmetricbasic256sha256)发送 RST(请求安全令牌),在 SOAP 安全标头中使用 SAMLToken1,将 ApplyTo 设置为 App2。

步骤 2. ADFS 将 RSTR 中的加密 SAML 断言返回给 App1

步骤 3. App1 向 App2 发送另一个 RST,将加密的 SAML 断言设置为安全头。

步骤 4. App2 可以获得 SAML 令牌。

执行第一步时,ADFS 返回“验证消息安全性时发生错误”,ADFS 的跟踪日志仅给出“'urn:oasis:names:tc:SAML:2.0:assertion' 类型的令牌已成功通过身份验证” , ADFS 中不再显示日志。

我正在使用 SOAP UI 进行 SOAP 调用,我想知道如何使用 issuetokenmixedasymmetricbasic256sha256 向 ADFS 发送 SAML 令牌以交换另一个 SAML 令牌。

第一:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:ns="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
    <soap:Header>
        <a:Action soap:mustUnderstand="1">http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue</a:Action>
        <a:To soap:mustUnderstand="1">https://ADFS_URL/adfs/services/trust/13/issuedtokenasymmetricbasic256sha256</a:To>
        <o:Security soap:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
        <Assertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion" ID="_7d723310-961e-417a-bb94-ee32dad0a48c" IssueInstant="2016-11-22T06:03:43.454Z" Version="2.0">**SAML Token 1</Assertion>
        </o:Security>
    </soap:Header>
   <soap:Body>
        <trust:RequestSecurityToken xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
            <wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
                <a:EndpointReference>
                    <a:Address>App2</a:Address>
                </a:EndpointReference>
            </wsp:AppliesTo>
            <trust:KeyType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Bearer</trust:KeyType>
            <trust:RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue</trust:RequestType>
            <trust:TokenType>urn:oasis:names:tc:SAML:2.0:assertion</trust:TokenType>
        </trust:RequestSecurityToken>
   </soap:Body>
</soap:Envelope>

4

0 回答 0