.Net Framework - Sustainsys 未启动对 IDP 的调用

问题描述 投票:0回答:1

我有一个旧的 .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 中查看是否有生产环境中的配置错误导致了该问题,但我还没有看到任何内容。

有人对可能导致该问题的原因有任何想法或建议吗?

.net iis web-config saml sustainsys-saml2
1个回答
0
投票

我能够解决这个问题。 我不知道为什么这解决了它,但它确实解决了。

首先我将以下软件包从 7.6.0 降级到 7.0.2:

  • Microsoft.IdentityModel.Tokens
  • Microsoft.IdentityModel.Abstractions
  • Microsoft.IdentityModel.JsonWebTokens
  • Microsoft.IdentityModel.Logging

这本身并没有解决问题,但这是我采取的一项行动。

解决这个问题的关键是我从 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 进行身份验证。

© www.soinside.com 2019 - 2024. All rights reserved.