我刚创建了一个托管在Azure订阅中的webform。我通过我的工作Azure目录进行身份验证,以便对用户进行身份验证。在调试中,这工作正常,我可以使用我的工作凭据登录,然后通过本地主机查看网站。
我已将此发布到我的Azure,它说它正在运行且运行正常。因此,当我尝试连接到网站时,它会不断将我重定向到localhost,从而导致错误。
我已检查过网络配置。
以下是谷歌网络事件链发生时的情况。
我真的迷失了什么是错的,我需要做些什么来解决这个问题,所以任何帮助都会非常感激。对不起,我不能提供更多,但我甚至不知道开始时或看哪里有什么问题。 Azure中是否还有一些我需要添加网站的设置?
答案 0 :(得分:5)
我已经解决了这个问题。由于这是一种痛苦,我会保持这种状态,因为我无法找到任何答案。实际上很简单。
您有两种选择。我所做的和有效的是改变发布简介如下:
添加正在进行身份验证的域。因此,如果您的Web应用程序由不同的Azure帐户托管,该帐户正在对用户进行身份验证,请使用正在进行身份验证的帐户。
这将在网站上创建两个版本的应用程序,一个用于本地主机,另一个用于实际站点。
第二个选项(我没有尝试过但它应该可以工作)是转到Azure帐户,在那里您要对用户进行身份验证并转到应用程序然后进行配置。将APP URL从本地主机更改为您尝试访问的URL。
这是一个很好的链接,解释了如何清楚地做到这一点。
答案 1 :(得分:2)
我也有这个问题并采取了这些步骤来解决
ReplyUrl
更改为应用的网址(例如http://appname.azurewebsites.net
)然后我收到了错误
错误请求 - 请求太长的HTTP错误400.请求标头的大小太长。
接下来,我清除了浏览器中的所有Cookie,这将错误更改为
错误请求
所以我回到ReplyUrl
并将其更改为https://appname.azurewebsites.net/.auth/login/aad/callback
,现在它似乎正常工作。
注意我还必须确保在开始工作之前我没有在任何其他标签中打开该网站
答案 2 :(得分:1)
当我将应用程序从我们的Azure公司转移到客户的Azure时,我遇到了这个问题。在我的情况下,我忘记更新ida:ClientId
,ida:AADInstance
和ida:TenantId
,这意味着我为ida:PostLogoutRedirectUri
设置的值被忽略了(我认为)而我的应用程序重定向到localhost。
一旦我将这些ida值更改为客户Azure上的应用设置和订阅设置中的值,它就会按预期工作。
花了一段时间来追踪Azure门户网站中的所有值,因为它们都被称为不同的东西,或根本没有命名:
ClientId
可以在Azure Active Directory中找到>应用注册> YourAppName。它被称为“应用程序ID'在Azure Domain
可以在Azure Active Directory上找到>概述。它目前位于格式为somename.onmicrosoft.com TenantId
这是Azure AD实例ID,从Azure Active Directory获取>属性,然后它被称为'目录ID' 我花了很多时间试图找出重定向到的localhost端口在代码中的位置,但就我所见,它根本就不存在,所以我不知道Azure是怎么回事正在选择重定向到的localhost地址!
答案 3 :(得分:0)
你需要在配置中设置另一个参数,即replyUrl并分配给你的网络应用程序,否则它需要从它发起的网址。
答案 4 :(得分:0)
我能够通过将Startup.Auth.cs文件redirectUri从“ https://localhost:44316/”更改为https://myapp.com/
来解决此问题。