我有一个出色的服务器端应用程序(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的正确方向。
谢谢。
答案 0 :(得分:0)
我能够通过一个小复选框ARR来解决此问题:
在IIS管理器中,选择当前服务器(而不是网站),打开“应用程序请求路由”,并且在右列上将有一个“服务器代理设置”选项。在那里,您将看到“在响应头中反向重写主机”选项。如果已选中,请取消选中它,然后您的问题将得到解决。