Identityserver4 .Net核心2.1 OpenIdConnectProtocolException

Identityserver4 .Net核心2.1 OpenIdConnectProtocolException,identityserver4,openid-connect,asp.net-core-2.1,Identityserver4,Openid Connect,Asp.net Core 2.1,我有一个.Net Core 2.1应用程序,我正在使用它来测试AWS中新的Identity Server 4部署 这两个程序在我的本地机器上运行得很好,在那里我可以使用IS4进行身份验证,并使用我的所有登录信息重定向到我的应用程序中 在我部署的服务器上,情况并非如此,我不确定原因 我在我的IS4服务器上没有看到任何错误,它看到了我的客户端并验证了请求 但是,在我的本地计算机上,我的项目出现错误: System.Exception: An error was encountered while h

我有一个.Net Core 2.1应用程序,我正在使用它来测试AWS中新的Identity Server 4部署

这两个程序在我的本地机器上运行得很好,在那里我可以使用IS4进行身份验证,并使用我的所有登录信息重定向到我的应用程序中

在我部署的服务器上,情况并非如此,我不确定原因

我在我的IS4服务器上没有看到任何错误,它看到了我的客户端并验证了请求

但是,在我的本地计算机上,我的项目出现错误:

System.Exception: An error was encountered while handling the remote login. ---> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolException: Message contains error: 'invalid_request', error_description: 'error_description is null', error_uri: 'error_uri is null'.
   at Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.RedeemAuthorizationCodeAsync(OpenIdConnectMessage tokenEndpointRequest)
   at Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleRemoteAuthenticateAsync()
   --- End of inner exception stack trace ---
   at Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler`1.HandleRequestAsync()
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
我称之为:

return Challenge(new AuthenticationProperties
                {
                    RedirectUri = "Home/Index"
                }, "challenge");
本地程序启动为:

services.AddAuthentication(options =>
                {
                    options.DefaultScheme = "Cookie";
                    options.DefaultChallengeScheme = "challenge";
                    //options.DefaultSignInScheme = IdentityServerConstants.DefaultCookieAuthenticationScheme;
                    //options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                })
                .AddCookie("Cookie")
                .AddOpenIdConnect("challenge", options =>
                {
                    options.Authority = "http://auth.is4server.com";
                    //options.Authority = "http://localhost:5000";
                    options.SignInScheme = "Cookie";
                    options.RequireHttpsMetadata = false;
                    options.ClientId = "mvc";
                    options.ClientSecret = "secret";
                    options.ResponseType = "code id_token";
                    options.SaveTokens = true;
                    options.GetClaimsFromUserInfoEndpoint = true;
                    options.Scope.Add("offline_access");
                    options.Scope.Add("profile");
                    options.Scope.Add("accunet");

                });
它看起来像是重定向到IS4登录页面,然后立即尝试重定向回我的重定向URI,该URI是
localhost:5002/signin oidc
,带有前面的错误。我已经确认我的所有IS4配置在本地机器和AWS实例上都是相同的

我不知道为什么这不起作用,尝试重定向到我的本地机器有什么问题吗?这个错误似乎没有给我很多细节和网络响应

在这开始发生之前,它至少会让我尝试登录到IS4登录页面,然后再将我重定向回我的登录oidc。现在它甚至无法进入登录页面,它总是重定向到signin oidc,并显示错误。我已清除Cookie并重新启动服务器和本地项目,但没有结果


任何帮助都将不胜感激

问题与我在AWS中的负载平衡器有关。由于IS4服务器位于该负载平衡器的后面,因此2个AWS far gate容器之间的所有内部通信都进行
HTTP
通信。因此,您需要将您的权限设置为
HTTP

但是,我在AWS集群上也有一个策略,将所有流量重定向到
HTTPS
,因为每当我调用
options.Authority=”时都会发生冲突http://auth.is4server.com";它尝试重定向到
“https://auth.is4server.com";因为它是内部远门,所以不允许


解决方案是添加
options.Origin=”https://auth.is4server.com";
因此发现文档具有安全端点,并且没有尝试重定向

你找到这个问题的答案了吗?由于options.Origin现在在ASP.NET Core 3.1中不可用,你能告诉我你是如何解决的吗?