.net-core - 涉及代理时 Saml ReturnUrl 丢失
问题描述
我在我的环境中使用 Sustainsys.Saml2 进行身份验证。在我将代理添加到循环中之前,它一直运行良好。
数据流为:
1) 用户通过代理服务器 (example.mysite.com) 导航到站点
2)代理转发到内部应用程序(example.internal.mysite.com)
3)Saml做它的事情,转发到服务authenticate
和redirect
步骤
4)奇怪的部分:saml 响应被发送回原始主机,命中 Saml2/Acs (example.mysite.com/Saml2/Acs) 并以 303 响应——假设它应该是 303 示例。 mysite.com,而是指向 example.internal.mysite.com 上的代理主机名
为什么这样做?它似乎不尊重 ReturnUrl(即 example.mysite.com)。在#4 之前,在身份验证过程中,我没有看到来自请求/响应的代理 URL 的证据。
解决方案
Sustainsys.Saml2 库根据它在传入 HTTP 请求中看到的内容构建各种 URL。当涉及代理时,它可能与客户端看到的 URL 不同。
您可以设置一个设置PublicOrigin
来处理此问题,它将覆盖请求中找到的任何主机。
但是,在 AspNetCore2 处理程序中,假定在调用处理程序之前这已在请求对象中修复。如果托管在 IIS 或类似的 Kestrel 中,这通常由托管环境自动完成。
推荐阅读
- xml - 标签的Apache骆驼更改值
- java - 为什么当 Arcore 片段工作时 DrawerLayout 不起作用?
- r - R - 如何格式化持续时间以使用 dplyr 进行正确排序
- android - room db 使用@query 更新多行
- powershell - PowerShell 没有拆分参数
- c# - 如何在 C# 中排除方法以进行 sonarqube 代码覆盖
- mysql - Golang GORM 使用 Lat 和 Lng 查询位置周围的位置
- android - Dragonboard 410c 开机后自动崩溃
- android - Appcelerator Studio - 无法在设备上运行但在 genymotion 模拟器中运行良好?
- ruby-on-rails - UserMailer:Class 的未定义方法“with”