IssuerNameRegistry 类

定义

发布者名称注册表的抽象基类。 发行人名称注册表用于加密材料的关联助记名称,需要验证由相应发行人生成的标志签名。 颁布者名称注册表维护了一个受依赖一方 (RP) 应用程序信赖的颁布者列表。

public ref class IssuerNameRegistry abstract : System::IdentityModel::Configuration::ICustomIdentityConfiguration
public abstract class IssuerNameRegistry : System.IdentityModel.Configuration.ICustomIdentityConfiguration
type IssuerNameRegistry = class
    interface ICustomIdentityConfiguration
Public MustInherit Class IssuerNameRegistry
Implements ICustomIdentityConfiguration
继承
IssuerNameRegistry
派生
实现

示例

以下代码显示了 类的 IssuerNameRegistry 实现,该类仅接受使用使用者为“CN=localhost”的证书的颁发者。

警告

以下代码仅用于说明目的。 基于使用者名称验证证书不是一种好的做法。 此代码不应在生产环境中按原样使用。

using System.IdentityModel.Tokens;

namespace System.IdentityModel.Samples
{
    /// <summary>
    /// This class verifies that the issuer is trusted, and provides the issuer name.
    /// </summary>
    public class TrustedIssuerNameRegistry : IssuerNameRegistry
    {
        /// <summary>
        /// Gets the issuer name of the given security token,
        /// if it is the X509SecurityToken of 'localhost'.
        /// </summary>
        /// <param name="securityToken">The issuer's security token</param>
        /// <returns>A string that represents the issuer name</returns>
        /// <exception cref="SecurityTokenException">If the issuer is not trusted.</exception>
        public override string GetIssuerName(SecurityToken securityToken)
        {
            X509SecurityToken x509Token = securityToken as X509SecurityToken;
            if (x509Token != null)
            {
                if (String.Equals(x509Token.Certificate.SubjectName.Name, "CN=localhost"))
                {
                    return x509Token.Certificate.SubjectName.Name;
                }
            }

            throw new SecurityTokenException("Untrusted issuer.");
        }
    }
}

下面显示了配置具有受信任颁发者名称注册表的应用程序所需的 XML。

<system.identityModel>  
  <identityConfiguration>  
    <issuerNameRegistry type="System.IdentityModel.Samples.TrustedIssuerNameRegistry, MyApp" />  
  </identityConfiguration>  
</system.identityModel>  

注解

颁发者名称注册表用于将助记键名称关联到验证相应颁发者生成的令牌签名所需的加密材料。 然后,此名称用于设置 Issuer 声明的 或 OriginalIssuer 属性。 由 类公开 IssuerNameRegistry 的方法由处理令牌的安全令牌处理程序从管道中调用。 由未由颁发者名称注册表映射的材料签名的令牌被丢弃为不受信任。 颁发者名称注册表返回的名称在 RP 应用程序的上下文中应是唯一的。

在代码中,可以通过设置 SecurityTokenHandlerConfiguration.IssuerNameRegistry 属性来指定要使用的颁发者名称注册表。 在配置文件中,可以通过在 securityTokenHandlerConfiguration> 元素下<指定 <issuerNameRegistry> 元素来指定颁发者名称注册表。

Windows Identity Foundation (WIF) 提供现成的 IssuerNameRegistry 类实现: ConfigurationBasedIssuerNameRegistry 类。 使用此实现时,可以在 RP 应用程序的配置文件中的 trustedIssuers> 元素下<指定受信任的颁发者列表,该元素是该元素<issuerNameRegistry>的 属性中引用 .class 时ConfigurationBasedIssuerNameRegistry该元素的type子元素。 在 元素下 <trustedIssuers> ,每个颁发者名称都映射到应用于验证其签名的 X.509 证书。

若要创建自定义颁发者名称注册表,必须重写 IssuerNameRegistry.GetIssuerName(SecurityToken) 方法。 此方法返回指定安全令牌的颁发者名称。 可以选择重写 IssuerNameRegistry.GetIssuerName(SecurityToken, String) 方法,以便在检索颁发者名称时提供提示机制; GetWindowsIssuerName 如果要为不同于 DefaultIssuer的 Windows 令牌提供颁发者名称,则可以替代 方法。 重写 方法, LoadCustomConfiguration 使颁发者名称注册表能够从配置文件初始化。

构造函数

IssuerNameRegistry()

初始化 IssuerNameRegistry 类的新实例。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetIssuerName(SecurityToken)

当在派生类中重写时,返回指定安全令牌的颁发者名称。

GetIssuerName(SecurityToken, String)

当在派生类中重写时,返回指定安全令牌的颁发者名称。 在确定要返回的颁布者名称中要考虑的指定的颁布者名称。

GetType()

获取当前实例的 Type

(继承自 Object)
GetWindowsIssuerName()

返回用于 Windows 声明的默认颁发者名称。

LoadCustomConfiguration(XmlNodeList)

在派生类中重写时,将从 XML 中加载自定义配置。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于

另请参阅