SecurityTokenInvalidAudienceException: IDX10214: сбой проверки аудитории - PullRequest
0 голосов
/ 16 октября 2018

Я занимаюсь разработкой приложения ASP.NET Core 2 с использованием Identity и Sustainsys.Saml2 (для проверки подлинности SAML).Я сделал необходимые конфигурации в файле Startup.cs.Теперь, когда я запускаю проект и пытаюсь войти в систему с использованием SAML2 (в качестве внешнего входа), после ввода учетных данных появляется следующая ошибка:

SecurityTokenInvalidAudienceException: IDX10214: Ошибка проверки аудитории.Аудитория: «[PII скрыт]».Не соответствует: validationParameters.ValidAudience: '[PII скрыт]' или validationParameters.ValidAudiences: '[PII скрыт]'.Microsoft.IdentityModel.Tokens.Validators.ValidateAudience (IEnumerable аудитории, SecurityToken SecurityToken, TokenValidationParameters validationParameters) Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityTokenHandler.ValidateConditions (Saml2SecurityToken samlToken, TokenValidationParameters validationParameters) Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityTokenHandler.ValidateToken (строкаtoken, TokenValidationParameters validationParameters, out SecurityToken validatedToken) Sustainsys.Saml2.Saml2P.Saml2Response + d__60.MoveNext () System.Collections.Generic.List..ctor (IEnumerable collection) System.Linq.oist.Saml2P.Saml2Response.GetClaims (параметры IOptions, IDictionary relayData) Sustainsys.Saml2.WebSso.AcsCommand.ProcessResponse (параметры IOptions, Saml2Response samlResponse, StoredRequestState.Windows.Sec.Saml2.AspNetCore2.Saml2Обработчик + d__12.MoveNext () System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задача) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи)CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задача) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача-задачи) Microsoft.AspNetCore.Diagnostics.EntityFrameworkSystem..MoveNext () System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware + d__7.MoveNext () * 100 *

имею в виду.Я что-то пропустил?

Вот что у меня в файле автозагрузки

services.AddAuthentication()
        .AddSaml2(options => 
        {
            var spOptions = new SPOptions
            {
                EntityId = new EntityId("https://localhost:44373/Saml2"),
                ReturnUrl = new Uri("https://localhost:44373"),
                MinIncomingSigningAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1",                  
            };                

            options.SPOptions = spOptions;
            options.IdentityProviders.Add(new IdentityProvider(new EntityId("https://www.example.com/SSO/SAML/App"), options.SPOptions)
            {
                AllowUnsolicitedAuthnResponse = false,                  
                MetadataLocation = "https://www.example.com/SSO/SAMLMetadata/App",                  
                LoadMetadata = true,                  
            }); 
        });

Заранее спасибо ...

1 Ответ

0 голосов
/ 16 октября 2018

Насколько я знаю, эта ошибка ясно говорит о том, что аудитория, пришедшая на ваш SAML-токен, отличается от значения в вашей конфигурации запуска.Может быть полезно сравнить эти значения.Иногда проверка не проходит из-за сравнения с учетом регистра, поэтому вам следует обратить внимание, в этом случае ваша аудитория находится в токене и конфигурации.

Согласно исходному коду ( Saml2Response ) и как Андерс Абель указал, свойство ValidAudience инициализируется из SPOptions.EntityId, который вы здесь настраиваете:

var spOptions = new SPOptions
{
    EntityId = new EntityId("https://localhost:44373/Saml2"),
    ReturnUrl = new Uri("https://localhost:44373"),
    MinIncomingSigningAlgorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1",                  
};

Таким образом, вы должны сравнить значение EntityId, которое вы настроили сзначение в вашем saml-токене, которое может выглядеть следующим образом:

<saml:Audience>The value here should be the same as in your startup configuration</saml:Audience>
...