Azure AD 身份验证重定向不到本地主机

问题描述

更新 2

与 Conveyor 支持服务交互后,看起来是与 Blazor 相关的问题。按照他们关于使用普通 Web 应用程序配置 Azure 的说明,它可以正常工作。

更新:

这似乎是一个与隧道相关的问题,通过使用 Keyoti 的 Conveyor(与 Ngrok 相同的问题):即使 URL 重定向(例如 https://mynetcoreapp.conveyor.cloud/signin-oidc)在 Azure AD 中的应用程序注册中列出了相同的响应提供。我使用自己的主机名在我的公共服务器上部署了该项目,并且运行良好。


按照尝试使用我的租户 Microsoft 帐户通过 Azure AD 登录认教程,我按照 here 中列出的步骤操作。

我使用以下方法设置项目:

dotnet new blazorserver -au SingleOrg --client-id "605d0c93-1de4-4c81-99fa-********" --tenant-id "54775aa1-2d0e-48cb-9a7f-*********"

它像魅力一样工作并登录在我的测试租户中注册用户,此外,如果我尝试不重定向到本地主机,例如使用 Conveyor Cloud,我会收到错误

AADSTS50011:请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配:'605d0c93-1de4-4c81-99fa-a6c3ef2e2b88'。

详情:

enter image description here

这是我使用的公共网址,只是为了尝试它是否可以在生产的公共服务器上运行

这是认情况,我将重定向 URL 设置为 localhost。 虽然它是用 localhost 设置的,但它可以工作,但如何使其仅使用公共 URL 工作?

enter image description here

我的 appconfig.json 文件与 localhost 重定向配合良好

enter image description here

我看到的是,即使我还指定了另一个公共 URL(来自 Conveyor),它也会以错误的方式重定向到 localhost,我可以想象这在生产环境中不起作用,在那里我将有一个公共主机名。我不知道如何设置我的项目,我知道这可能是一些愚蠢的配置内容,但对不起,我是这些技术的新手。 谢谢!

解决方法

如错误所述,请求中指定的回复 URL 必须与为应用程序配置的回复 URL 匹配。

在此 Tutorial 之后,通过运行 dotnet run --framework netcoreapp3.1,它默认在 https://localhost:5001 上运行。因此它运行良好,因为它在您的 Azure AD 应用中找到匹配的回复 URL。

现在您只需在 Azure AD 应用程序中设置回复 URL。但是您没有在 Blazor Server 应用端配置匹配的回复 URL。

不要担心,因为如果您将 Blazor 服务器应用发布到 Azure 云中,它会自动为您配置该部分。唯一需要做的就是将 Blazor 服务器应用 url (https://blaz-aad.conveyor.cloud/signin-oidc) 配置到 Azure AD 应用中。

如果您想知道它为什么在您的本地环境中使用 5001 端口,您可以在 BlazorSample\Properties\launchSettings.json 文件中查看配置。

"BlazorSample": {
  "commandName": "Project","dotnetRunMessages": "true","launchBrowser": true,"applicationUrl": "https://localhost:5001;http://localhost:5000","environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
}

"applicationUrl": "https://localhost:5001;http://localhost:5000" 与您在 Azure AD 应用中配置的重定向 URL 匹配。