IssuerNameRegistry Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
A classe base abstrata para um Registro do nome do emissor. Um Registro do nome do emissor é usado para associar um nome mnemônico ao material criptográfico que é necessário para verificar as assinaturas dos tokens produzidos pelo emissor correspondente. O Registro do nome do emissor mantém uma lista de emissores confiáveis para um aplicativo RP (de terceira parte confiável).
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 a seguir mostra uma implementação da IssuerNameRegistry classe que aceita apenas emissores que usam certificados com a entidade "CN=localhost".
Aviso
O código a seguir é somente para fins ilustrativos. Validar certificados com base no nome da entidade não é uma boa prática. Esse código não deve ser usado 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.");
}
}
}
A seguir, mostra o XML necessário para configurar um aplicativo com o registro de nome do emissor confiável.
<system.identityModel>
<identityConfiguration>
<issuerNameRegistry type="System.IdentityModel.Samples.TrustedIssuerNameRegistry, MyApp" />
</identityConfiguration>
</system.identityModel>
Comentários
O registro de nome do emissor é usado para associar um nome mnemônico ao material criptográfico necessário para verificar assinaturas de tokens produzidos pelo emissor correspondente. Esse nome é então usado para definir a Issuer propriedade ou OriginalIssuer de uma declaração. Os métodos expostos pela IssuerNameRegistry classe são chamados do pipeline pelo manipulador de token de segurança que está processando o token. Tokens assinados por material que não é mapeado por um registro de nome do emissor são descartados como não confiáveis. O nome retornado pelo registro de nome do emissor deve ser exclusivo dentro do contexto de um aplicativo RP.
No código, você pode especificar o registro de nome do emissor a ser usado definindo a SecurityTokenHandlerConfiguration.IssuerNameRegistry propriedade . Em um arquivo de configuração, o registro de nome do emissor pode ser especificado especificando o <elemento issuerNameRegistry> no <elemento securityTokenHandlerConfiguration> .
O WIF (Windows Identity Foundation) fornece uma implementação da IssuerNameRegistry classe pronta para uso: a ConfigurationBasedIssuerNameRegistry classe . Ao usar essa implementação, você pode especificar a lista de emissores confiáveis no arquivo de configuração do aplicativo RP no <elemento trustedIssuers> , que é um elemento filho do <issuerNameRegistry>
elemento quando a ConfigurationBasedIssuerNameRegistryclasse .é referenciada no atributo desse type
elemento. No elemento , cada nome do <trustedIssuers>
emissor é mapeado para o certificado X.509 que deve ser usado para verificar sua assinatura.
Para criar um registro de nome de emissor personalizado, você deve substituir o IssuerNameRegistry.GetIssuerName(SecurityToken) método . Esse método retorna o nome do emissor para o token de segurança especificado. Opcionalmente, você pode substituir o IssuerNameRegistry.GetIssuerName(SecurityToken, String) método para fornecer um mecanismo de dica ao recuperar nomes de emissor e o GetWindowsIssuerName método se quiser fornecer um nome de emissor para tokens do Windows diferentes de DefaultIssuer. Substitua o método para permitir que o LoadCustomConfiguration registro de nome do emissor seja inicializado de um arquivo de configuração.
Construtores
IssuerNameRegistry() |
Inicializa uma nova instância da classe IssuerNameRegistry. |
Métodos
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetIssuerName(SecurityToken) |
Quando substituído em uma classe derivada, retorna o nome do emissor do token de segurança especificado. |
GetIssuerName(SecurityToken, String) |
Quando substituído em uma classe derivada, retorna o nome do emissor do token de segurança especificado. O nome de emissor especificado pode ser considerado para determinar o nome do emissor a ser retornado. |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
GetWindowsIssuerName() |
Retorna o nome de emissor padrão a ser usado em declarações do Windows. |
LoadCustomConfiguration(XmlNodeList) |
Quando substituído em uma classe derivada, carrega a configuração personalizada do XML. |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |