有没有办法将用户导航到具有查询字符串参数的依赖方?
背景
我们正在使用ADFS 2.0,其中我们使用供应商应用程序的单点登录(SSO)的声明规则设置了信赖方信任。我们正在使用IdpInitiatedSignOn和SAML 2.0执行此操作。因此,我们可以将用户导航到像 mycompany.com 这样的SSO;然而,我们无法弄清楚,如何将用户导航到具有查询字符串参数的同一应用程序的不同页面,例如 mycompany.com?index = 123
我们尝试使用RelayState来解决这个问题,但没有运气。这是我的第一篇文章。如果我错过了提供足够的信息,我表示歉意。
答案 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)结果: