web-dev-qa-db-fra.com

SecurityTokenInvalidAudienceException: IDX10214: La validation de l'audience a échoué

Je développe une application ASP.NET Core 2 utilisant Identity et Sustainsys.Saml2 (pour l'authentification SAML). J'ai fait les configurations nécessaires dans le fichier Startup.cs. Maintenant, lorsque j'exécute le projet et que j'essaie de me connecter à l'aide de SAML2 (en tant que connexion externe), j'obtiens l'erreur suivante après avoir entré mes informations d'identification:

SecurityTokenInvalidAudienceException: IDX10214: La validation de l'audience a échoué. Public: "[PII est masqué]". Ne correspond pas à: validationParameters.ValidAudience: '[PII est masqué]' ou validationParameters.ValidAudiences: '[PII est masqué]'. Microsoft.IdentityModel.Tokens.Validators.ValidateAudience (Les publics IEnumerable, SecurityToken SecurityToken, TokenValidationParameters validationParameters) Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityTokenHandler.ValidateConditions (Saml2SecurityToken samlToken, TokenValidationParameters validationParameters) Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityTokenHandler.ValidateToken (string token, TokenValidationParameters validationParameters, out SecurityToken validatedToken) Sustainsys.Saml2.Saml2P.Saml2Response + d__60.MoveNext () System.Collections.Generic.List .. .Saml2P.Saml2Response.GetClaims (options IOptions, IDictionary relayData) Sustainsys.Saml2.WebSso.AcsCommand.ProcessResponse (options IOptions, Saml2Response samlResponse, StoredRequestState storedRequestState) Sustainsys.Samls.Commands Saml2.AspNetCore2.Saml2 Handler + d__12.MoveNext () System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task task) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task task) Microsoft.AspNetCore.Autication .Authentication. CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task task) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task task) Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMompServerCompter System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (tâche de tâche) Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware + d__6.MoveNext () System.Runtime.ExceptionServices.Ext) .MoveNext () System.Runtime.CompilerServices.Task Awaiter.ThrowForNonSuccess (tâche de tâche) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (tâche de tâche) Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware + d__7.MoveNext ()

Je ne comprends pas ce que cela signifie. Suis-je en train de manquer quelque chose?

Voici ce que j'ai dans le fichier de démarrage

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,                  
            }); 
        });

Merci d'avance...

3
OnlyOneEA

Pour autant que je sache, cette erreur indique clairement que l'audience fournie dans votre jeton SAML est différente de la valeur de votre configuration de démarrage. Il pourrait être utile de comparer ces valeurs. Parfois, la validation échoue en raison d'une comparaison sensible à la casse, vous devez donc faire attention, auquel cas vos audits sont en jeton et en configuration.

Selon le code source ( Saml2Response ) et comme Anders Abel l'a souligné, la propriété ValidAudience est initialisée à partir de SPOptions.EntityId que vous configurez ici:

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",                  
};

Vous devez donc comparer la valeur EntityId, que vous avez configurée avec la valeur de votre saml-token, qui pourrait ressembler à ceci:

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