1

我有一个托管在 IIS 服务器上的 ASP.NET Core 2.1 Angular 6 应用程序。我的刷新令牌无效时遇到问题。我有一个 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();
            });
4

1 回答 1

1

问题是密钥默认存储在本地机器上。在网络场中,您需要将其保存在每个主机都可以访问的地方。我将此添加到我的 startup.cs 及其工作中。不知道为什么,但没有选项将密钥存储在 sql server 中。

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

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

于 2018-11-20T20:02:10.983 回答