【问题标题】:WIF config: issuerNameRegistry vs. certificateValidationWIF 配置:issuerNameRegistry 与 certificateValidation
【发布时间】:2026-01-26 10:35:01
【问题描述】:

在 Windows Identity Foundation (WIF) 4.5 配置中,issuerNameRegistrycertificateValidation 之间的关系是什么?每个 SAML 2.0 断言的哪一部分验证?

例如:下面的代码和配置将验证颁发者证书是否具有给定的指纹。但我假设“无”以外的certificateValidationMode 将验证一些额外的细节?

var handlers = FederatedAuthentication.FederationConfiguration.IdentityConfiguration.SecurityTokenHandlers;
var token = handlers.ReadToken( myxmlReader );
var identities = handlers.ValidateToken( token );

配置:

  <system.identityModel>
    <identityConfiguration>
      <securityTokenHandlers>
        <securityTokenHandlerConfiguration>
          <tokenReplayDetection enabled="true" />
          <audienceUris>
            <add value="https://localhost:1234/MyApp" />
          </audienceUris>
          <issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089">
            <trustedIssuers>
              <add thumbprint="1111111111111" name="http://some.domain/adfs/services/trust" />
            </trustedIssuers>
          </issuerNameRegistry>
          <certificateValidation certificateValidationMode="None"/>
        </securityTokenHandlerConfiguration>
      </securityTokenHandlers>
    </identityConfiguration>
  </system.identityModel>

或者这只是实现相同目的的两种替代方法(验证颁发者是否持有您信任的证书)。

【问题讨论】:

    标签: .net single-sign-on wif saml-2.0 claims-based-identity


    【解决方案1】:

    IssuerNameRegistry 是一个从指纹到 EntityID 的查找表。只有该表中的颁发者才会被信任。

    CertificateValidationMode 是在表格要求之上的附加值。 “无”几乎总是最好的设置。因为信任是通过元数据建立的,通常不是通过对 CA 的链信任。所以 ChainBuilding、CRL 等是不相关的。

    【讨论】: