带认证功能的Blazor服务器反向代理服务器

问题描述 投票:0回答:1

我有一个blazor服务器端应用程序(netcore 3),它使用通过OpenID Okta进行认证。

我开始通过IIS进行测试,把它作为一个普通的网站来运行,效果还不错。

但是,由于我们其他的设置,我需要通过一个反向代理来运行它,在我设置好之后,blazor网站就不能再运行了。

我们的反向代理很简单,只是取一个网址(https:/subdomain.domain.com),然后在内部进行路由(http:/localhost:8093)。这里还连接了其他网站,这只是一个例子。

通过添加 "app.UseForwardedHeaders",我设法让所有的资源(css、js、图片)都能正常工作,但我在Authentication方面仍然存在问题。

对于认证,它的设置是services.AddAuthentcation,和AddOpenIdConnect,它是由MVC调用AccountLogin触发的,它发出HttpContext.ChallengeAsync。

单机运行应用程序,或者在它的网站中,Login工作,并重定向到Okta(https:/oktadevurl.comoauth2defaultv1authorize?参数)。

通过反向代理,这个url变成相对于代理地址(https:/subdomain.domain.com)。oauth2defaultv1authorize?)这是不正确的。

我已经仔细检查了前向头和OpenId Okta的设置。我在寻找任何一个曾经遇到过这个问题的人,并能给我指出正确的方向,如何通过反向代理从blazor获得绝对的URLs工作。

谢谢。

asp.net-core iis blazor
1个回答
0
投票

我能够解决这个问题的一个小复选框是ARR。

在IIS管理器中,选择当前服务器(不是网站),打开 "应用请求路由",在右侧栏中会有一个选项 "服务器代理设置"。在那里你会看到 "Reverse rewrite host in response headers "选项。如果勾选了这个选项--取消勾选,你的问题应该就解决了。

© www.soinside.com 2019 - 2024. All rights reserved.