В следующем примере кода показано, как создавать
настраиваемые реестры имен поставщиков для 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"; } } |