Проверка подписи не удалась. Невозможно сопоставить ключи - PullRequest
0 голосов
/ 06 февраля 2020

Возникла проблема при входе в систему при использовании более одного модуля kubernete в качестве сервера аутентификации. При доступе к аутентификации Api основной сайт всегда получает ключ, однако ниже возникает ошибка. Более того, эта ошибка возникает случайно - я не могу зайти на сайт несколько раз подряд, потому что возникает ошибка проверки, но затем проверка проходит, и я попадаю на сайт. Или я могу зайти на сайт в первый раз - я не могу понять, в чем проблема. Токены, как вы видите в ошибке, полностью действительны, потому что поля малыша идентичны

Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10501: Signature validation failed. Unable to match keys: 
kid: 'b654c7d2a47506037f76315343c28206', 
token: '{"alg":"RS256","kid":"b654c7d2a47506037f76315343c28206","typ":"JWT"}.{"nbf":1580961436,"exp":1580965036,"iss":"***.AuthenticationService","aud":["***.AuthenticationService/resources","api"],"client_id":"MVC_Password","sub":"***","auth_time":1580961436,"idp":"local","preferred_username":"***","unique_name":"***","fullname":"***","email":"***","email_verified":false,"phone_number":"***","phone_number_verified":false,"scope":["permission","role"],"amr":["pwd"]}'.
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(String token, TokenValidationParameters validationParameters)
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(String token, TokenValidationParameters validationParameters, SecurityToken& validatedToken)
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()

Это настройки моего приложения:

            services
                .AddAuthentication(o =>
                {
                    o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                    o.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                })
                .AddIdentityServerAuthentication(options =>
                {
                    options.Authority = Configuration.Get<AppSettings>().IdentityServiceUrl;
                    options.RequireHttpsMetadata = false;
                    options.NameClaimType = "fullname";
                    options.RoleClaimType = "role";
                    IdentityModelEventSource.ShowPII = true;
                    options.JwtBearerEvents.OnAuthenticationFailed = context =>
                    {
                        context.NoResult();
                        return Task.CompletedTask;
                    };
                });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...