ASP.Net 身份验证后重定向到本地主机

ASP.Net redirecting to local host after authentication

我刚刚创建了一个托管在我的 Azure 订阅中的网络表单。我通过我的工作 Azure 目录设置了身份验证,用于对用户进行身份验证。在调试中,这工作正常,我可以使用我的工作凭据登录,然后通过本地主机查看网站。

我已将此发布到我的 Azure,它说它 运行 并且工作正常。因此,当我尝试连接到该网站时,它会不断将我重定向到本地主机,从而导致错误。

我检查了网络配置。

这是发生时的 google 网络事件链。

我真的不知道出了什么问题,也不知道我需要做什么来解决这个问题,所以我们将不胜感激任何帮助。对不起,我不能提供更多,但我什至不知道从哪里开始或从哪里看是错误的。 Azure 中是否有一些设置需要我也添加网站?

我已经解决了这个问题。因为这太痛苦了,我会坚持下去,因为我找不到任何答案。其实很简单。

你有两个选择。我所做的工作是更改发布配置文件,如下所示:

添加进行身份验证的域。因此,如果您的 Web 应用程序由另一个对用户进行身份验证的 Azure 帐户托管,请使用进行身份验证的帐户。

这将在站点上创建您的应用程序的两个版本,一个用于本地主机,一个用于实际站点。

第二个选项(我没有尝试过,但它应该可以)是转到您对用户进行身份验证的 Azure 帐户,然后转到应用程序,然后进行配置。将 APP URL 从本地主机更改为您尝试访问的 url。

这里有一个很好的link,清楚地解释了如何做到这一点。

Click this link for detailed explanation

您需要在配置中设置另一个参数 replyUrl 并分配给您的 Web 应用程序,否则它会使用它的来源 url。

我也遇到了这个问题并采取了这些步骤来解决

  1. 导航到 AAD 中的应用程序注册
  2. 打开清单
  3. ReplyUrl 更改为应用程序的 url(例如 http://appname.azurewebsites.net

然后我得到了错误

Bad Request - Request Too Long HTTP Error 400. The size of the request headers is too long.

接下来我清除了浏览器中的所有 cookie,这将错误更改为

Bad Request

所以我回到那个 ReplyUrl 并将其更改为 https://appname.azurewebsites.net/.auth/login/aad/callback 现在它似乎可以工作了。

请注意,我还必须确保网站在开始工作之前没有在任何其他选项卡中打开

我在将应用程序从我们公司的 Azure 切换到客户的 Azure 时遇到了这个问题。在我的例子中,我忘记更新 ida:ClientIdida:AADInstanceida:TenantId,这意味着我为 ida:PostLogoutRedirectUri 设置的值被忽略了(我认为)相反,我的应用程序重定向到本地主机。

一旦我将这些 ida 值更改为我们客户 Azure 上的应用程序设置和订阅设置中的值,它就会按预期工作。

追踪 Azure 门户中的所有值花了一些时间,因为它们都被称为不同的东西,或者根本没有命名:

  • ClientId 可在 Azure Active Directory > 应用注册 > YourAppName 中找到。在 Azure
  • 中称为 'Application ID'
  • Domain 可在 Azure Active Directory > 概述中找到。它目前位于左上角,格式为 somename.onmicrosoft.com
  • TenantId 这是 Azure AD 实例 ID,从 Azure Active Directory > 属性获取它,然后它被称为 'Directory ID'

我花了很多时间试图找出被重定向到的本地主机端口在代码中的位置,但据我所知它根本不存在,所以我不知道 Azure 如何正在选择要重定向到的本地主机地址!

我能够通过将我的 Startup.Auth.cs 文件 redirectUri 从“https://localhost:44316/" to https://myapp.com/