首页 > 解决方案 > 涉及代理时 Saml ReturnUrl 丢失

问题描述

我在我的环境中使用 Sustainsys.Saml2 进行身份验证。在我将代理添加到循环中之前,它一直运行良好。

数据流为:

1) 用户通过代理服务器 (example.mysite.com) 导航到站点

2)代理转发到内部应用程序(example.internal.mysite.com)

3)Saml做它的事情,转发到服务authenticateredirect 步骤

4)奇怪的部分:saml 响应被发送回原始主机,命中 Saml2/Acs (example.mysite.com/Saml2/Acs) 并以 303 响应——假设它应该是 303 示例。 mysite.com,而是指向 example.internal.mysite.com 上的代理主机名

为什么这样做?它似乎不尊重 ReturnUrl(即 example.mysite.com)。在#4 之前,在身份验证过程中,我没有看到来自请求/响应的代理 URL 的证据。

标签: .net-coresustainsys-saml2

解决方案


Sustainsys.Saml2 库根据它在传入 HTTP 请求中看到的内容构建各种 URL。当涉及代理时,它可能客户端看到的 URL 不同。

您可以设置一个设置PublicOrigin来处理此问题,它将覆盖请求中找到的任何主机。

但是,在 AspNetCore2 处理程序中,假定在调用处理程序之前这已在请求对象中修复。如果托管在 IIS 或类似的 Kestrel 中,这通常由托管环境自动完成。


推荐阅读