IdentityServer4发现文档在部署到反向代理后面的子路由时返回404

时间:2019-01-04 04:07:50

标签: identityserver4 oidc

我需要从此更改发现端点的URL:

/.well-known/openid-configuration

对此:

/identity/.well-known/openid-configuration

我正在尝试将ID4部署到Azure Kubernetes服务。当我将ID4部署到根地址(如http://xxxx.europe.cloudapp.azure.com)时,一切都很好-我看到了欢迎页面,并且可以访问我的发现端点。

但是,当我将ID4部署到子路由(http://xxxx.europe.cloudapp.azure.com/identity)时,我无法访问oidc配置。我正在使用URL重写,因此当我单击链接以访问发现文档(http://xxxx.europe.cloudapp.azure.com/identity/.well-known/openid-configuration)时,我会收到HTTP404。

编辑:

当我添加时:

    app.Use(async (context, next) =>
    {
        context.Request.PathBase = "/identity";
        await next.Invoke();
    });

所有css / js / jpeg文件均已正确加载。这是进步。

但是,当我单击欢迎页面(({http://xxxx.europe.cloudapp.azure.com/identity/.well-known/openid-configuration)上可见的链接时,我会收到HTTP404。当我单击Grants(({http://xxxx.europe.cloudapp.azure.com/identity/grants)。这是相同的故事。手动删除“ / identity” from链接仍会导致404。

3 个答案:

答案 0 :(得分:1)

通过使用Map上的IApplicationBuilder Api,您应该能够使用相对URI。

        app.Map("/identity", authApp =>
        {
            authApp.UseIdentityServer();
        });

答案 1 :(得分:1)

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Map("/identity", authApp =>
{
    app.UseStaticFiles("/identity");
    authApp.UsePathBase(new PathString("/identity"));
    authApp.UseIdentityServer();
});
}

编辑:

也不要使用

app.UseHttpsRedirection()

为代理服务器保留HTTPS

答案 2 :(得分:0)

感谢Vidmantas和Mohamed的回答,我设法使它起作用。我使用了他们的建议,这就是最终使我成功的原因:

         app.Map("/identity", authApp =>
        {
            authApp.UseStaticFiles();
            authApp.UseIdentityServer();
            authApp.UseMvcWithDefaultRoute();

        });

如果没有

,它就无法正常工作
  

authApp.UseMvcWithDefaultRoute();

我的istio网关配置中存在一些问题。解决它们之后,IS4就像子路由中的符咒一样工作。谢谢您的回答。