更改AD FS中的RelayState

时间:2017-11-01 15:45:32

标签: single-sign-on saml saml-2.0 adfs adfs2.1

请考虑以下情况:我们目前处于迁移阶段,我们的大多数用户仍应转发到现有应用程序A.满足某些标准的其他用户(让他们称之为beta-测试者)应该转发到新的应用程序B.

用户通过包含SAMLResponse和RelayState的POST请求到达我们的AD FS。 RelayState参数告诉AD FS所需的目标应用程序。到目前为止,它始终包含"网站A"因为用户还不了解网站B; - )

我想知道是否有一种动态更改过程的方法,我们的ADFS根据RelayState参数的值确定目标应用程序? 所以我正在寻找的方法是以某种方式根据用户提供的某种声明来修改RelayState 。例如。如果用户有一个" beta-tester"在她的角色声明中输入,然后我们的ADFS应该将她转发到站点B而不是站点A.

有没有办法挂钩AD FS procfting管道?到目前为止我唯一发现的是this article描述如何注入"自定义身份验证方法。但这显然不是我想要的。

那么有人能告诉我是否还有其他扩展点可以用来实现我上面描述的内容?

2 个答案:

答案 0 :(得分:0)

抱歉,不 - 没有办法动态更改RelayState。

ADFS被锁定(因为它是一个安全系统)并且没有扩展点。

过渡期间你有两个RP吗?

答案 1 :(得分:0)

一种方法是设置一个代理站点,您可以根据需要为此类场景应用自定义逻辑。我的经验是,有很多时候可以方便地进入联合进程,即一个伪扩展点,您可以在其中应用自定义逻辑。因此,来自IdP的每个人都可以转到https://proxy.mysite.com,然后该网站将根据声明和可能的查询字符串,发布的变量或标题属性进行确定,以确定将用户发送(重定向)到下一个位置,{{3 }或https://a.mysite.com

DNS也可以插入,直接https://b.mysite.com到代理站点,然后代理站点可以查看请求的主机名,并知道用户打算转到a.mysite。 com,但您可以确定是否有beta测试人员并直接访问b.mysite.com或实际的A站点。