我有一个旧的 .Net Framework 4.7.2 应用程序,它使用 Sustainsys 和 Sustainsys.Saml.Mvc(版本 2.9.2)通过 SAML 执行身份验证。
按照文档中概述的说明在 web.config 中设置配置:https://saml2.sustainsys.com/en/v2/configuration.html
当我将应用程序部署到我的测试环境时,它运行得很好。 它使用 SAML 向 IDP 进行身份验证并继续。
当我将应用程序部署到生产环境时,应用程序不会抛出任何错误,但它也不会尝试通过 SAML 调用 IDP。我的意思是,从来没有像我期望的那样使用 SAML 请求对 IDP 进行任何 HTTP 调用。相反,它直接进入另一个代码块,尝试检查声明主体上的声明,并立即出错,因为没有任何声明。
如果我在本地运行应用程序,它还会尝试使用 SAML 调用 IDP。
我已经对测试环境的 web.config 与生产环境的转换后的 web.config 进行了比较。我找不到任何不寻常的东西。
我觉得生产环境中出了问题,导致 Sustainsys 代码无法添加到中间件/管道中,但这只是一种怀疑。
我一直在尝试在 IIS 中查看是否有生产环境中的配置错误导致了该问题,但我还没有看到任何内容。
有人对可能导致该问题的原因有任何想法或建议吗?
我能够解决这个问题。 我不知道为什么这解决了它,但它确实解决了。
首先我将以下软件包从 7.6.0 降级到 7.0.2:
这本身并没有解决问题,但这是我采取的一项行动。
解决这个问题的关键是我从 web.config 中删除了 X-Frame-Options 选项
<!-- Removed this -->
<add name="X-Frame-Options" value="SAMEORIGIN" />
X-Frame-Options 标签位于
<system.webServer>
<httpProtocol>
<!-- It was here -->
</httpProtocol>
</system.webServer>
在 web.config 中。
采取这两项操作使站点按预期启动并通过 SustainSys 进行身份验证。