具有查询字符串参数的ADFS信赖方信任

时间:2015-06-14 23:38:36

标签: adfs

有没有办法将用户导航到具有查询字符串参数的依赖方?

背景

我们正在使用ADFS 2.0,其中我们使用供应商应用程序的单点登录(SSO)的声明规则设置了信赖方信任。我们正在使用IdpInitiatedSignOn和SAML 2.0执行此操作。因此,我们可以将用户导航到像 mycompany.com 这样的SSO;然而,我们无法弄清楚,如何将用户导航到具有查询字符串参数的同一应用程序的不同页面,例如 mycompany.com?index = 123

我们尝试使用RelayState来解决这个问题,但没有运气。这是我的第一篇文章。如果我错过了提供足够的信息,我表示歉意。

1 个答案:

答案 0 :(得分:0)

可以通过深层链接进行直接SSO。有几个演练,但是对于您的需求并不十分清楚。当我将它们用于此答案时,我将与他们分享。

TLDR答案:

**[ADFS base URL]**/adfs/ls/idpinitiatedsignon.aspx?RelayState=EncodedURL(RPID=EncodedURL(**[LoginToRP value]***)&RelayState=EncodedURL(**[Destination URL]**))

Target: mydestinationURL
LoginRPID: myLoginRPIDValue
Base ADFS URL: https://adfs.myDomain.com/adfs/ls/idpinitiatedsignon.aspx

Example: https://adfs.myDomain.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=RPID%3DmyLoginRPIDValue%26RelayState%3DmydestinationURL

参考:

  

网站以分解正确的SAML并直接进行一种身份验证:http://www.confusedamused.com/notebook/adfs-relaystate

     

帮助生成/验证正确URL的网站:https://jackstromberg.com/adfs-relay-state-generator/

     

网站的HTML编码值:https://www.url-encode-decode.com/

逻辑故障:

1A)HTML对目标URL进行编码

1B)HTML对LoginToRP参数进行编码

2)以以下格式将它们连接在一起:RPID = [HTML编码的LoginToRP值]&RelayState = [HTML编码的目标URL]

3)HTML编码级联字符串

4)连接基本URL和编码字符串:[基本URL]?RelayState = [双编码字符串]

5)结果:

https://adfs.myDomain.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=RPID%3DmyLoginRPIDValue%26RelayState%3DmydestinationURL