0

考虑以下情况:我们目前处于迁移阶段,我们的大多数用户仍应转发到现有应用程序 A。满足某些特定条件的其他用户(我们称他们为 beta 测试人员)应改为转发到新应用程序申请 B。

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

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

有没有办法连接到 AD FS 处理管道?到目前为止,我发现的唯一内容是这篇描述如何“注入”自定义身份验证方法的文章。但这显然不是我想要的。

那么有人能告诉我是否有任何其他扩展点可以用来实现我上面描述的目标吗?

4

2 回答 2

0

抱歉,不 - 无法动态更改 RelayState。

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

在过渡期间你能有两个 RP 吗?

于 2017-11-01T19:02:12.213 回答
0

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

DNS 也可以折叠起来,以执行诸如将https://a.mysite.com直接访问代理站点之类的操作,然后代理站点可以查看请求的主机名并知道用户打算访问 a.mysite .com,但您可以确定是否是 beta 测试人员并直接访问 b.mysite.com 或实际的 A 站点。

于 2017-11-07T21:43:55.920 回答