В следующем примере кода показано, как создавать настраиваемые реестры имен поставщиков для X509SecurityTokenHandler и для Saml11SecurityTokenHandler. DBHelper.IsIssuerTokenValid – прототип вспомогательного метода, выполняющего проверку маркера поставщика.

  Копировать код
using Microsoft.IdentityModel.Tokens; using System.IdentityModel.Tokens;

class SampleIssuerNameRegistry : IssuerNameRegistry { // Вызывается методом X509SecurityTokenHandler.Validate public override string GetIssuerName(SecurityToken securityToken) { if (!(securityToken is X509SecurityToken)) { throw new SecurityTokenValidationException("Invalid token."); }

		X509SecurityToken x509Token = securityToken as X509SecurityToken;

		// Для маркера X509 имя поставщика недоступно bool issuerTokenValid = DBHelper.IsIssuerTokenValid(x509Token);

		if (!issuerTokenValid) { throw new SecurityTokenValidationException("Untrusted issuer token."); }

		return x509Token.Certificate.FriendlyName; }

	// Вызывается методами Saml11SecurityTokenHandler.Validate и Saml2SecurityTokenHandler.Validate public override string GetIssuerName(SecurityToken securityToken, string requestedIssuerName) { bool issuerTokenValid = DBHelper.IsIssuerTokenValid(securityToken);

		if (!issuerTokenValid) { throw new SecurityTokenValidationException("Untrusted issuer token."); }

		return requestedIssuerName; }

	public override string GetWindowsIssuerName() { return "WINDOWS AUTHORITY"; }

}