OpenIddict Запрос токена был отклонен, потому что код авторизации или токен обновления были недействительными - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть приложение ASP.NET Core 2.1 Angular 6, размещенное на сервере IIS.У меня проблемы с тем, что мой токен обновления недействителен.У меня есть кластер IIS ARR Round Robin.Все работает, когда только один сервер подключен к сети.Однако, когда несколько серверов подключены к сети, мой токен обновления действителен только при запросах к серверу, который выдал токен.

Iv добавил это в мои startup.cs безуспешно

 app.UseForwardedHeaders(new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders.All
            });

            string XForwardedPathBase = "X-Forwarded-PathBase";
            string XForwardedProto = "X-Forwarded-Proto";

            app.Use((context, next) =>
            {
                if (context.Request.Headers.TryGetValue(XForwardedPathBase, out StringValues pathBase))
                {
                    context.Request.PathBase = new PathString(pathBase);

                }

                if (context.Request.Headers.TryGetValue(XForwardedProto, out StringValues proto))
                {
                    context.Request.Protocol = proto;
                }

                return next();
            });

1 Ответ

0 голосов
/ 20 ноября 2018

Проблема заключалась в том, что ключи хранились по умолчанию на локальном компьютере.В веб-ферме вам нужно сохранить ее где-нибудь, к чему каждый хост может получить доступ.Я добавил это в мой startup.cs и он работает.Не знаю, почему, но нет возможности сохранить ключ на сервере SQL.

 services.AddDataProtection()
      .PersistKeysToFileSystem(new DirectoryInfo(@"\\server\path\"));

https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/overview?view=aspnetcore-2.1

...