【问题标题】:Blazor Webassembly Azure AD authentication hosted in Azure storage account在 Azure 存储帐户中托管的 Blazor Webassembly Azure AD 身份验证
【发布时间】:2020-11-06 23:14:06
【问题描述】:

根据“使用 Azure Active Directory 保护 ASP.NET Core Blazor WebAssembly 独立应用程序”https://docs.microsoft.com/en-us/aspnet/core/blazor/security/webassembly/standalone-with-azure-active-directory?view=aspnetcore-3.1 中描述的说明,我创建了最简单的 blazor WebAssembly 应用程序。 在https://portal.azure.com,我在 AAD 中注册了新应用,并根据生成的 GUID 使用以下命令生成了本地应用:

dotnet new blazorwasm -au SingleOrg --client-id "{CLIENT ID}" --tenant-id "{TENANT ID}" -o {APP NAME}

如果我在本地启动应用程序,一切正常。如果我将已发布的应用程序复制到存储帐户 $web 并尝试登录,我会收到:

AADSTS50011:请求中指定的回复 URL 与 为应用程序配置的回复 URL:'...'。

在应用注册期间,我已将应用定义为“Web”并放置重定向 URL: https://localhost:5001/authentication/login-callback 我尝试了 URL 更改主机名、删除端口和更改路径的不同组合。我不知道如何在 AD 中成功配置应用程序。

【问题讨论】:

  • 在门户中导航到您的存储帐户 -> Static website -> 复制 Primary endpoint,然后将重定向 url 更改为 <Primary endpoint>/authentication/login-callback,类似于 https://xxxx.z13.web.core.windows.net/authentication/login-callback,它会工作吗?
  • 我已按照您的建议更改了重定向 URL,单击登录链接后服务器回答“请求的内容不存在。HttpStatusCode: 404 ErrorCode: WebContentNotFound RequestId: 59d63c65-a01e-00d7-7827-5c8b94000000 TimeStamp: 2020-07-17T10:43:11.6487124Z"
  • 如果是的话,原来的问题已经解决了,对于新的问题,你需要在启用网站时指定一个错误文档,然后返回一个默认的404页面给用户,见docs.microsoft.com/en-us/azure/storage/blobs/…
  • 原始问题未解决。问题是一样的:用户登录后,HTTP 服务器找不到登陆位置(重定向 URL)。我刚刚阅读了身份验证库的源代码。一切看起来都很好,所以问题出在其他地方。
  • 你能在用户登录时显示你的请求网址吗?

标签: azure authentication azure-storage blazor-webassembly


【解决方案1】:

AAD 错误表明您被重定向的 URL 不在应用注册中配置的回复 url 列表中。您需要以 {WebsiteUrl}/authentication/login-callback 格式注册回复 url。
请试一试,希望能解决问题。
Note-WebsiteUrl 是托管在 azure 中的 Url

【讨论】:

  • 我已经尝试过这个本地主机和完整的站点名称。它不起作用。
  • @MarekSłowikowski - 我的意思是 {WebsiteUrl}/authentication/login-callback 应该在您的 azure Active Active Directory 应用程序注册(身份验证刀片)中注册为回复 URL。无论您用作您应用中的重定向 uri 应与 AAD 中在回复 URL 中注册的完全相似。
  • @MarekSłowikowski-当您的应用程序被重定向到 azure Active Active Directory 时,您将获得格式为 -login.microsoftonline.com{tenant}/oauth2/v2.0/authorize 的 url? client_id=6731de76-14a6-49ae-97bc-6eba6914391e &response_type=id_token &redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F &scope=openid &response_mode=fragment &state=12345 &nonce=678910 你能告诉我什么是重定向uri吗应用程序正在传递 url?
  • 我刚刚阅读了在 Azure 存储帐户上创建的静态站点不支持 CORS。 Azure App Service 这样做了,Azure App Service 引用的同一个静态站点也可以正常工作。
  • @MarekSłowikowski - 很高兴知道身份验证正在部署在应用服务中的静态网站上运行,您可以查看主要为静态网站构建的 azure 应用服务(预览版)网站,还不如更好地满足您的需求。奇怪,因为存储帐户支持 cors,因此存储帐户中托管的静态网站应该支持 cors。
【解决方案2】:

根据上面的答案和 cmets,我采取了 2 个步骤来解决这个问题:

  1. Azure AD 必须在应用注册 | 中有一个条目认证 |单页申请 |读取 {WebsiteUrl}/authentication/login-callback 的重定向 URI。 {WebsiteUrl} 来自存储帐户 |静态网站 |主要终点。

  2. 确保存储帐户 |静态网站 |索引文档名称 和 错误文档路径 都指向index.html。

【讨论】:

    猜你喜欢
    • 2022-08-16
    • 2021-07-22
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2022-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多