我将 ASP.NET Web 应用程序发布到 Azure,但没有看到登录屏幕。
当我将限制访问选项设置为允许未经身份验证的访问时,我可以调用 API 并检索数据。我已遵循本指南:https://learn.microsoft.com/en-us/azure/app-service/scenario-secure-app-authentication-app-service?tabs=workforce-configuration#dnl-note 其中声明“您应该被定向到安全的登录页面,验证未经身份验证的用户是否不允许访问该网站。”就我而言,此登录页面从未显示,相反,我只看到一个空白页面,其中包含文本“您无权查看此目录或页面。”
我是否遗漏或忘记了什么?
最小可重现示例
创建网络应用程序
- 打开 Visual Studio,然后选择创建新项目。
- 在创建新项目中,找到并选择 ASP.NET Core Web API,然后选择下一步。
- 在配置新项目中,将应用程序命名为 WebAppApi,然后选择下一步。
- 其他信息:框架:.NET 8.0,身份验证类型:无,配置 HTTPS,不使用顶级语句,使用控制器
- 选择创建。
- 运行应用程序
- 浏览器现在应该显示通过网络应用程序检索到的一些数据。
创建 Azure Web 应用程序
- 转到 Azure 门户
- 转到网络服务
- 选择创建 Web 应用程序
- 将 Web 应用程序命名为“WebAppApi”。
- 使用设置:运行时堆栈:.NET 8,定价计划:免费 F1
- 启用基本身份验证
- 否则使用默认设置并创建。
- 部署后,转到下载发布配置文件
发布网络应用程序
- 右键单击项目 -> 发布
- 导入下载的发布配置文件
- 新闻发布
- 现在您可以转到 Web 应用程序概述页面中的默认域链接并添加“/weatherforecast”,您应该看到与在 Visual Studio 中运行它相同的数据
这非常有效,只是任何人都可以访问此 API。我想使用 Microsoft 身份验证将访问限制为仅限我组织内的用户。
将应用程序身份验证添加到在 Azure 应用服务上运行的 Web 应用程序
https://learn.microsoft.com/en-us/azure/app-service/scenario-secure-app-authentication-app-service?tabs=workforce-configuration#dnl-note
- 在 Azure Web 应用程序中,转到“设置 - 身份验证”
- 添加身份提供商
- 选择微软
- 选择劳动力配置
- 选择创建新应用程序注册
- 名称:WebAppApi
- 账户类型:当前租户
- 仅允许来自此应用程序本身的请求
- 允许任何身份的请求
- 仅允许来自发行人租户的请求
- 需要身份验证
- HTTP 401 Unauthorized:推荐用于 API
- 检查令牌存储框
- 选择添加
验证访问权限
- 转到网络应用程序概述页面中的默认域链接并添加“/weatherforecast”(与之前相同)
- 您将看到一条消息“您无权查看此目录或页面。”而不是指南中提到的登录页面