IssuerNameRegistry Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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) |