问题描述
更新 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'。
这是我使用的公共网址,只是为了尝试它是否可以在生产的公共服务器上运行
这是默认情况,我将重定向 URL 设置为 localhost。
虽然它是用 localhost 设置的,但它可以工作,但如何使其仅使用公共 URL 工作?
我的 appconfig.json 文件与 localhost 重定向配合良好
我看到的是,即使我还指定了另一个公共 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 匹配。