异常:关联失败。未知位置

Exception: Correlation failed. Unknown location

身份服务器身份验证重定向到我的应用程序后,它给出

异常:关联失败。 未知位置

现在因为我在用SPA。这条路肯定是没有的。但问题是我如何定义一个。我应该在那里做什么。

我用过Identityserver的混合流。

https://localhost:44375/signin-oidc

我已经提到了以下内容。

https://github.com/IdentityServer/IdentityServer4.Samples/blob/master/Clients/src/MvcHybridAutomaticRefresh/Startup.cs

但是在上面link有一个SPA中间件。这是 VueCliMiddleWare。 (对我来说,这是在制造问题。路线。)

(对于其余路由,它 return 根据以下代码索引文件。只有此 /oidc-client 路径不起作用。)

     app.Use(async (context, next) =>
        {
            await next();
            if (context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value))
            {
                context.Request.Path = "/index.html";
                await next();
            }
        })
.UseDefaultFiles(new DefaultFilesOptions { DefaultFileNames = new List<string> { "index.html" } });

如果我定义如下

routes.MapSpaFallbackRoute(
                    name: "spa - fallback",
                    defaults: new { controller = "CatchAll", action = "Index" });

然后这条路线重定向到那个控制器。但是我无法 return 索引文件。

下面提到 link 缺少状态 属性。

但是我还是不知道怎么设置。

因此,如果有人有最终答案,则不会将其标记为已接受的答案。

https://github.com/aspnet/AspNetCore/issues/7501#issuecomment-464082989

已更新:

下面是这个问题的答案。

从 2020 年开始,您应该使用 https 来解决这个问题

app.UseHttpsRedirection();

对于开发环境运行dotnet dev-certs https --trust信任本地证书

我在使用 Amazon Cognito 时遇到了同样的错误。我的测试用户池工作正常(在本地主机上),但我的生产用户池不允许我登录。我终于意识到生产用户池也有一个客户端密码(以及一个客户端 ID),可以通过: services.AddOpenIdConnect(options => { ... options.ClientSecret = ...

这是浪费时间但现在看起来很明显的问题之一!

首先检查您是否有

public static IEnumerable<ApiScope> GetScopes()
        {
            return new List<ApiScope>
            {
                new ApiScope()
                {
                    Name = "catalogs"
                }
            };
        }

在您的 config.cs 文件中。如果您在本地主机上,则必须在 IdentityServer 和客户端应用程序中为 redirect_url 使用相同的地址。 (如果您在 identityserver 中设置本地主机,则必须在客户端应用程序中使用本地主机作为 redirecturl 而不是 127.0.0.1)。 希望对您有所帮助 ;)