Я пытаюсь проверить токен SAML, возвращенный AzureAD. Маркер SAML содержит узел SubjectConfirmation
, поэтому я пытаюсь расширить класс Saml2SecurityTokenHandler
для переопределения метода ValidateConfirmationData
. Это я не могу сделать.
Я сделал следующие изменения конфигурации
<system.identityModel>
<identityConfiguration>
<securityTokenHandlers>
<clear />
<add type="MyNamespace.CustomSaml2SecurityTokenHandler, MyAssembly" />
<securityTokenHandlerConfiguration>
<audienceUris>
<add value="http://localhost/MyApp"/>
</audienceUris>
<certificateValidation certificateValidationMode="None" />
<issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089">
<trustedIssuers>
<add thumbprint="<thumbprint>" name="MyIdentityName" />
</trustedIssuers>
</issuerNameRegistry>
</securityTokenHandlerConfiguration>
</securityTokenHandlers>
</identityConfiguration>
</system.identityModel>
Используемый код выглядит следующим образом
//get system.identityModel configuration and initialize
var ic = new IdentityConfiguration(true);
ic.Initialize();
//create token handlers collection with the configuration
var thc = SecurityTokenHandlerCollection.CreateDefaultSecurityTokenHandlerCollection(
ic.SecurityTokenHandlers.Configuration);
//add current request URL for allowed audience validation (only the "http://host" part)
//note: additional URLs can be configured in system.identityModel/identityConfiguration/securityTokenHandlers/securityTokenHandlerConfiguration/audienceUris
//this might be required in some web farm deployments
thc.Configuration.AudienceRestriction.AllowedAudienceUris.Add(
new Uri(requestUri.GetComponents(UriComponents.SchemeAndServer, UriFormat.UriEscaped)));
thc.ValidateToken(token);
Проблема является то, что thc.ValidateToken
не вызывает класс CustomSaml2SecurityTokenHandler
(определенный через конфигурацию выше).