IssuerNameRegistry Classe

Definição

A classe base de abstrato para um registo de nomes de emissor. Um registo de nomes do emissor é usado para associar um nome mnemónico ao material criptográfico necessário para verificar as assinaturas dos tokens produzidos pelo emissor correspondente. O registo de nomes do emissor mantém uma lista de emissores confiáveis por uma aplicação de parte confiável (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
Herança
IssuerNameRegistry
Derivado
Implementações

Exemplos

O código seguinte mostra uma implementação da IssuerNameRegistry classe que só aceita emissores que usam certificados com o sujeito "CN=localhost".

Warning

O código seguinte é apenas para fins ilustrativos. Validar certificados com base no nome da disciplina não é uma boa prática. Este código não deve ser usado tal como está em produção.

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.");
        }
    }
}

O seguinte mostra o XML necessário para configurar uma aplicação com o registo de nomes do emissor de confiança.

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

Observações

O registo de nomes do emissor é usado para associar um nome mnemónico ao material criptográfico necessário para verificar as assinaturas dos tokens produzidos pelo emitente correspondente. Este nome é então usado para definir o Issuer ou a OriginalIssuer propriedade de uma reivindicação. Os métodos expostos pela IssuerNameRegistry classe são chamados do pipeline pelo gestor de token de segurança que está a processar o token. Tokens assinados por material que não está mapeado por um registo de nomes do emissor são descartados como não confiáveis. O nome devolvido pelo registo de nomes do emitente deve ser único no contexto de uma aplicação de RP.

No código, pode especificar o registo de nomes do emissor a usar definindo a SecurityTokenHandlerConfiguration.IssuerNameRegistry propriedade. Num ficheiro de configuração, o registo de nomes do emissor pode ser especificado especificando o <elemento IssuerNameRegistry> sob o <elemento securityTokenHandlerConfiguration> .

Windows Identity Foundation (WIF) fornece uma implementação da classe IssuerNameRegistry logo de uso: a classe ConfigurationBasedIssuerNameRegistry. Quando usa esta implementação, pode especificar a lista de emissores confiáveis no ficheiro de configuração da aplicação RP sob o <elemento trustedIssuers> , que é um elemento filho do <issuerNameRegistry> elemento quando o ConfigurationBasedIssuerNameRegistry.class é referenciado no atributo desse type elemento. Sob o <trustedIssuers> elemento, o nome de cada emissor é mapeado para o certificado X.509 que deve ser usado para verificar a sua assinatura.

Para criar um registo personalizado de nomes do emissor, deve sobrescrever o IssuerNameRegistry.GetIssuerName(SecurityToken) método. Este método devolve o nome do emissor para o token de segurança especificado. Pode, opcionalmente, sobrescrever o método IssuerNameRegistry.GetIssuerName(SecurityToken, String) para fornecer um mecanismo de hinting ao recuperar nomes dos emissores e o método GetWindowsIssuerName se quiser fornecer um nome de emissor para Windows tokens que seja diferente do DefaultIssuer. Substitua o LoadCustomConfiguration método para permitir que o registo de nomes do emissor seja inicializado a partir de um ficheiro de configuração.

Construtores

Name Description
IssuerNameRegistry()

Inicializa uma nova instância da IssuerNameRegistry classe.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetIssuerName(SecurityToken, String)

Quando sobreposto numa classe derivada, devolve o nome do emissor do token de segurança especificado. O nome do emissor especificado pode ser considerado na determinação do nome do emissor a devolver.

GetIssuerName(SecurityToken)

Quando sobreposto numa classe derivada, devolve o nome do emissor do token de segurança especificado.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
GetWindowsIssuerName()

Devolve o nome padrão do emissor para ser usado nas reclamações do Windows.

LoadCustomConfiguration(XmlNodeList)

Quando sobreposto numa classe derivada, carrega uma configuração personalizada a partir do XML.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também