我在ADFS中配置了2个依赖方信任(App1,App2),在SAML Web流程之后进行用户身份验证后,最终App1获得了SAML令牌:SamlToken1。
目前的情况是,由于防火墙,用户的浏览器无法访问App2,因此App2无法获取SAML令牌。
我认为使用WS-Trust通过authortokenmixedasymmetricbasic256sha256端点ADFS提供的解决方案:
步骤1.使App1充当WS-Trust客户端,向ADFS(端点issuedtokenmixedasymmetricbasic256sha256)发送RST(请求安全性令牌),使用SOAP安全性头中的SAMLToken1,将ApplyTo设置为App2。
步骤2. ADFS在RSTR中将加密的SAML断言返回给App1
步骤3. App1向App2发送另一个RST,将加密的SAML断言设置为安全头。
步骤4. App2可以获取SAML令牌。
当执行第一步时,ADFS返回"在验证消息的安全性时发生错误",ADFS的跟踪日志仅提供"类型' urn:oasis的标记:名称:TC:SAML:2.0:断言'已成功通过身份验证",ADFS中没有显示进一步的日志。
我使用SOAP UI进行SOAP调用,我想知道如何使用issuedtokenmixedasymmetricbasic256sha256向ADFS发送SAML令牌以交换另一个SAML令牌。
RST:
<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>
&#13;