具有身份验证的Blazor服务器反向代理

时间:2020-05-05 21:59:25

标签: asp.net-core iis blazor

我有一个出色的服务器端应用程序(netcore 3),该应用程序通过OpenID / Okta使用身份验证。

我开始通过IIS进行测试,然后将其作为常规网站运行就可以了。

但是,由于我们的其余设置,因此我需要通过反向代理运行它,并且在设置了blazor站点后,它不再起作用。

我们的反向代理很简单,只需要一个URL(https://subdomain.domain.com),并在内部进行路由(http:// localhost:8093)。这里还有其他站点连接,这只是一个例子。

我通过添加“ app.UseForwardedHeaders”设法使所有资源(css,js,图像)正常工作,但是身份验证仍然存在问题。

对于身份验证,使用services.AddAuthentcation和AddOpenIdConnect进行设置,这是通过对帐户/登录的MVC调用触发的,该调用发出HttpContext.ChallengeAsync。

独立运行该应用程序或在其网站上运行该登录名,然后重定向到Okta(https://oktadevurl.com/oauth2/default/v1/authorize?parameters)。

通过反向代理,该URL相对于代理地址(https://subdomain.domain.com/ oauth2 / default / v1 / authorize?parameters )是相对的。

>

我已经仔细检查了转发头和OpenId / Okta设置。我正在寻找曾经遇到过此问题的人,并且可以向我指出如何通过反向代理从blazor获得绝对URL的正确方向。

谢谢。

1 个答案:

答案 0 :(得分:0)

我能够通过一个小复选框ARR来解决此问题:

在IIS管理器中,选择当前服务器(而不是网站),打开“应用程序请求路由”,并且在右列上将有一个“服务器代理设置”选项。在那里,您将看到“在响应头中反向重写主机”选项。如果已选中,请取消选中它,然后您的问题将得到解决。