将Blazor客户端应用程序和服务器部署到Azure时AzureB2C显示本地主机登录的问题

vptzau2j  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(147)

我刚刚完成了一个新的客户端Blazor应用程序,使用Azure B2C进行身份验证。
在localhost上一切都运行得很好,但是当我将服务器发布到新的Azure Web App时,登录弹出窗口引用HTTP(不是HTTPS)***localhost***URL(见图),并且无法找到该页面(当然)。不知道为什么localhost是目标,因为对该URL的唯一引用是用于Visual Studio启动应用程序的launchsettings.json

我已经搜索了我能想到的所有项目文件和设置,但找不到问题所在。是的,我已配置了返回Azure托管服务器的B2C身份验证重定向URL。
这是我第一次在Azure上部署Blazor应用程序,所以它可能只是一些我还没有意识到的简单东西。
Azure B2C中的Web重定向设置如下:

我还检查了整个发布文件集的本地副本,但找不到任何引用localhostURL的内容

更新

在清理了未使用的应用程序注册及其重定向URL之后,我将其缩小到在本地运行时在URL中返回的错误:
http://localhost/signin-oidc#error=redirect_uri_mismatch&error_description=AADB2C90006:+The+redirect+URI +'https://localhost:7164/authentication/login-callback'+ provided+in+the+request+is+not+registered+for+the+client+id+'{xxxx}'.
在将重定向更改为authentication/login-callback(原来是/signin-oidc)后,仍然显示相同的错误,因此AzureB 2C服务器中肯定存在缓存。
从部署的服务器来看,错误类似。
http://localhost/authentication/signin-oidc#error=redirect_uri_mismatch&error_description=AADB2C90006:+The+redirect+URI +'https://xxxxxx.azurewebsites.net/authentication/login-callback'+ provided+in+the+request+is+not+registered+for+the+client+id+'{xxxx}'.
当所需的重定向丢失时,它似乎回退到另一个重定向。可能是最后一个成功/缓存的?
另一张纸条。当您使用Azure B2C启动Blazor应用程序时,它会创建两个单独的应用程序注册。一个用于服务器身份验证,一个用于客户端身份验证。它可能是每个不同端点所需的,因此任何“修复”的复制可能会不断破坏客户端或服务器,缓存会混淆问题。我将使用Auth启动一个新的模板化Blazor应用程序,并记录它在每个AzureB 2C应用程序注册中创建的确切URL。

注意事项:

  • 我创建了一个新的客户端服务器Blazor应用程序,使用Azure B2C进行Auth连接,称为DeleteMe。
  • 它创建一个名为DeleteMe的应用程序注册,然后配置第二个名为DeleteMe-Client的应用程序注册,其中包含4个重定向URL。
  • 4个重定向URL与IIS和本地主机的HTTP和HTTPS设置匹配,并且都具有http://localhost:xxxx/authentication/login-callback
  • DeleteMe主应用程序注册没有创建重定向URL,因此我之前添加到主应用程序注册的任何内容似乎都是不必要的
  • 创建连接到AzureB 2C的新Blazor客户端/服务器应用程序时,首次尝试配置自身总是失败。第二次尝试成功,但创建了第三个应用程序注册。
  • 我检查了客户端应用程序设置,并删除了未使用的应用程序注册
  • 在本地运行应用程序,运行正常
  • 已为Azure应用服务创建发布配置文件
  • 添加了新的应用程序域作为DeleteMe客户端应用程序注册的额外重定向

  • 部署到Azure免费应用服务
  • 很好用

  • 现在通过服务器和客户端配置,我看到服务器使用/signin-oidc,但实际上没有使用服务器端登录。
  • 将旧URL域添加到新客户端应用程序注册
  • 将客户端指向新的应用程序注册客户端ID
  • 使用新的App注册客户端ID部署旧网站
  • 它会将登录重定向到新网站!

  • 删除新的重定向URL
  • 它仍然重定向到新网站的URL!
2q5ifsrm

2q5ifsrm1#

好的,好的。所以经过大量的试验和实验,我让它在部署的网站上工作。
实际上,我什么也没做,只是修复了一些重定向URL和“等待它变得活跃”。其他一切都是红鲱鱼。
您还可以通过创建新的应用程序注册、在使用前配置所有URL并使用AzureB2C中的新ClientId来解决此问题。那么就没有机会进行缓存。
看起来AzureB2c缓存返回URL,如果任何重定向URL无效,它似乎会选择它使用的最后一个有效URL。我会补充更多的细节,如果它再次发生。
感谢@Harshitha的建议。每一件小事都有助于把注意力集中在问题上。

更新

因此,作为测试的一部分,我从应用程序注册中删除了所有localhost重定向。当我将它们添加回来,再次在本地运行时,立即的效果是重定向到我成功使用的以前的Azure云版本!肯定是缓存/更新问题。

  • 我还尝试清除Azure托管域中的所有cookie,但没有任何更改,所以肯定是AzureB2C的问题。

最终更新

每隔5分钟检查一次后,在任何新的重定向URL变为活动之前,似乎有***30分钟的延迟***。

相关问题