You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SustainSys ASP.NET MVC 4.8迁移后密钥不信赖问题求助

解决ASP.NET MVC (.NET 4.8) SustainSys SAML密钥信任错误及请求头问题

针对你遇到的"The signature verified correctly with the key contained in the signature, but that key is not trusted"错误,结合新服务器的Upgrade-Insecure-Requests: 1请求头差异,按以下步骤排查配置:

1. 确保IdP签名证书被显式信任

这个错误的核心是应用能验证签名,但不认可该密钥的合法性。解决方式有两种:

  • 方式一:通过web.config直接配置证书
    在<sustainsys.saml2>节点下的<identityProviders>里,显式添加IdP的签名证书(可用证书指纹或嵌入证书内容):
    <sustainsys.saml2>
      <identityProviders>
        <add entityId="你的IdP实体ID" metadataLocation="你的IdP元数据URL">
          <signingCertificates>
            <!-- 按指纹从本地存储加载 -->
            <add storeName="TrustedPeople" storeLocation="LocalMachine" x509FindType="FindByThumbprint" findValue="证书指纹字符串" />
            <!-- 或者直接嵌入证书Base64内容 -->
            <!-- <add certificate="MIIC5zCCAc+gAwIBAgIU..." /> -->
          </signingCertificates>
        </add>
      </identityProviders>
    </sustainsys.saml2>
    
  • 方式二:将证书导入服务器信任存储
    把IdP的签名证书安装到新服务器的本地计算机 > 受信任的人或受信任的根证书颁发机构存储中,确保应用程序池账号有权限读取该存储。

2. 修正SP端点的协议与URL配置

Upgrade-Insecure-Requests: 1头说明新服务器启用了HTTPS强制跳转,需确保SP的元数据端点与实际请求协议一致:

  • 在web.config的<serviceProvider>节点中,明确指定HTTPS格式的实体ID和ACS回调地址:
    <serviceProvider 
      entityId="https://新服务器SP实体ID" 
      assertionConsumerServiceUrl="https://新服务器域名/Saml2/Acs"
      returnUrl="https://新服务器域名/默认跳转页" />
    
  • 如果服务器在反向代理/负载均衡后,需开启负载均衡支持,让SustainSys识别代理传递的真实协议(如X-Forwarded-Proto):
    <serviceProvider>
      <loadBalanced enabled="true" />
    </serviceProvider>
    

3. 调整证书验证模式(调试/特殊场景)

如果IdP使用自签名证书或内部CA签发的证书,可临时调整证书验证规则(生产环境需谨慎):

<sustainsys.saml2>
  <certificateValidation certificateValidationMode="PeerOrChainTrust" revocationMode="NoCheck" />
</sustainsys.saml2>
  • PeerOrChainTrust:信任证书本身或其所在的证书链
  • NoCheck:跳过吊销检查(仅调试或非敏感环境使用)

4. 排查IIS重定向规则影响

检查新服务器的IIS是否配置了强制HTTPS的重定向规则,确保SAML请求(尤其是ACS回调)不会被错误重定向。可在web.config的<system.webServer>中添加例外规则,允许SAML端点的请求直接处理:

<rewrite>
  <rules>
    <rule name="Force HTTPS" stopProcessing="true">
      <match url="^(?!Saml2/).*$" />
      <conditions>
        <add input="{HTTPS}" pattern="off" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

内容的提问来源于stack exchange,提问作者Buggy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 03:07:36