我有一个既可以作为SAML 2.0 IdP又可以作为SP的Web应用程序,并且已经在我的平台和ADFS之间成功实现了SSO,但仅当ADFS是IdP时。
这是我首次尝试使用ADFS作为SP与平台集成,但是在理解SSO流程时遇到了问题。
在我的情况下,我有三个参与者:WebApp(IdP),ADFS(SP),RelyingParty(S)。信任关系是在ADFS中设置的,用户体验应该是成功登录到WebApp的RelyingParty的登录名]
使用我的Web应用程序在ADFS中设置新的索赔提供者信托似乎可以正常工作。我可以转到应用程序的IdP发起的URL,该URL将未经请求的SAML消息发送到ADFS的ACS URL。当我这样做时,我将被重定向到/idpinitiatedsignon
,并显示消息“您已登录”,并下拉了我已经建立的依赖方。
如果我单击RP的登录按钮,则ADFS会在最终到达依赖方之前,向我的Web应用程序生成一个新的AuthNRequest。
所以,看到这种行为,我有两个问题:
我本以为通过我的IdP发起的登录名首次登录ADFS会使我进入RP,而无需返回IdP进行另一次登录。我误会了,还是我刚刚配置了ADFS?
ADFS通过什么机制确定要使用我的IdP?如果我在浏览器中转到ADFS /adfs/ls/idpinitiatedsignon.aspx
页面,则根本不涉及我的IdP,选择我的RP确实会使用我的IdP来授权用户,但是我不知道如何确定这一点,因为没有链接ADFS配置中信任声明提供者和依赖方之间的关系。
https://your-adfs-server/adfs/ls/IdpInitiated.aspx?loginToRp=your:relying:party:id
如果要涉及您的IDP,则需要使用来自RelyingParty(S)的SP发起的流。
然后,ADFS将显示“家庭领域发现”屏幕,您可以选择IDP。