对于Azure托管的静态Web应用程序(Blazor),为什么从移动浏览器查看URL时RedirectURI和PostL



第一次提问者-长期搜索者。我一直在拔我的头发一个星期左右试图理解为什么有些东西在本地工作(使用localhost:XXXX),但在发布到Azure时却不工作。

设置

在标准Azure租户和B2C租户中托管的静态web应用程序已创建以提供用户身份验证。所使用的代码是微软提供的Blazor WASM示例之一=>https://learn.microsoft.com/en - us/aspnet/core/blazor/security/webassembly/standalone -与- azure -活动-目录- b2c?view=aspnetcore - 3.1

构建过程使用git-hub和Azure内置功能,在github Pull发生时将其推送到Azure租户主机。静态web应用程序有一个标准的托管计划,而不是免费的选项。

我对默认的修改

我创建了一个Visual Studio解决方案,将模板下载到一个名为Client的项目中并包含了一个API项目在一个解决方案(即形状为Microsoft静态Web应用程序)。

appsettings。Json文件修改如下:

{
"AzureAdB2C": {
"Authority": "https://{domain}.b2clogin.com/{domain}.onmicrosoft.com/B2C_1_signupsignin1",
"ClientId": "{Application ID GUID",
"RedirectUri": "https://localhost:XXXXX/authentication/login-callback",
"PostLogoutRedirectUri": "https://localhost:XXXXX/authentication/logout-callback",
"RedirectUriProd": "https://{generated domain prefix}.azurestaticapps.net/authentication/login-callback",
"PostLogoutRedirectUriProd": "https://{generated domain prefix}.azurestaticapps.net/authentication/logout-callback",
"ValidateAuthority": false
}
}
我添加了RedirectUriPostLogoutRedirectUri价值,因为我一直在谷歌搜索和交叉参考,试图找出什么可能工作!还有两个条目RedirectUriProdPostLogoutRedirectUriProd值是当我将解决方案移动到Azure时使用的值(删除Prod位并将Dev添加到其他两个位)。

在Program.cs中,MSAL被用于身份验证,并添加了openid和offline_access以进行良好的测量(再次搜索并试图了解发生了什么)。

builder.Services.AddMsalAuthentication(options =>
{
builder.Configuration.Bind("AzureAdB2C", options.ProviderOptions.Authentication);
options.ProviderOptions.DefaultAccessTokenScopes.Add("openid");
options.ProviderOptions.DefaultAccessTokenScopes.Add("offline_access");
});

有了这个配置,当我在本地访问解决方案时-没问题。当我升级到Azure时,会发生两件事:

  1. 当从PC通过其链接访问静态Web应用程序时,我可以登录,但如果我试图签出一个HTTP 404错误屏幕显示。输入图片描述
  2. 当我试图从我的手机访问相同的链接(例如,浏览器无关紧要),我得到的应用程序,但如果我点击"登录"屏幕显示"检查登录状态";后面紧跟着HTTP 404错误。

检查来自电话尝试的URL,静态应用程序正在尝试访问:

https://https://{generated domain prefix}.azurestaticapps.net/authentication/login-callback#state={code}&client_info={code}&code={code}

这把我带到了这里——我不知所措。我不明白为什么重定向的两个事件发生,因为一切都是据我所知"应该"发生的。工作。我一直在广泛搜索,试图找到一个解决方案,因为我正在寻找静态web应用程序(和无服务器一般)的问题似乎是正确的匹配。事实上,我一直在玩的Blazor应用程序运行良好,无论是PC还是移动设备。现在是这个身份验证位把我难住了。

欢迎任何指导🙏

检查您在Azure中的配置,我认为问题出在您在门户中的login-callback配置上。

最新更新