【问题标题】:How do you authencate to Azure App Services locally?如何在本地对 Azure 应用服务进行身份验证?
【发布时间】:2016-03-12 03:19:30
【问题描述】:

有很多关于如何配置给定 Azure 应用服务实例的身份验证属性的教程:

Api Apps

Expanding App Service Authentication/Authorization

有配置 Azure 服务器端属性的指南:

AAD

FaceBook

Twitter

Google

Microsoft Account

我相信这些都是在位于我们的 Azure 应用服务组件前面的服务器端网关上设置属性。这种方法很好,因为您只需将用户的浏览器定向到 ~/.auth/login/XYZ 即可启动登录流程。

但是,我无法弄清楚我应该如何在开发时对其中任何一个进行身份验证,通过 localhost 在我的 PC 上本地运行 MVC 应用程序和 API 应用程序。我没有在本地运行的网关。没有监听 localhost/.auth/login/XYZ 的端点。

那么,故事是什么?您如何在那里进行身份验证?具体来说,您如何开发以使您需要在本地执行的任何操作都可以发布到您的 Web 和 Api 应用程序,并让身份验证体验在 Azure 中的应用程序服务生态系统中发挥作用?

【问题讨论】:

  • @GandhaliSamant 我认为这不是一回事。我的问题是关于 2015 年 3 月发布的 Azure 应用服务。这种新方式让您的 Azure 资产位于 Microsoft 托管网关后面,该网关为您执行 oAuth “舞蹈”。在 Azure 中运行良好。目前尚不清楚是否已经存在任何可以帮助/(处理)在代码在本地运行的 Web 应用程序或 api 应用程序的开发阶段。
  • 您可以拥有 2 个 AD 应用程序。一种用于生产,另一种用于开发。然后,将您的凭据信息(例如客户端 ID、密钥、租户 ID 和登录 URL)保存在 Web 应用程序的应用程序设置中。同样,对于本地环境,您可以将凭证保存在系统环境中。现在,您可以从系统环境中获取,而不是从 web.config 获取凭据。希望这是你想要的。

标签: azure azure-web-app-service azure-api-apps azure-mobile-services


【解决方案1】:

According to this,唯一的方法是编写一些开发环境专用代码来伪造IPrincipals,声明与生产环境中的 Azure 环境提供的声明等效。

  • 在 web.config 中创建一个 appSetting 值,用于标识应用是否处于本地开发模式,例如:

  • 在 Azure 门户应用程序设置中将此值定义为 false。此值将覆盖 web.config 中配置的值。

  • 创建另一个登录选项,该选项仅在 EnableLocalLogin appSetting 为 true 时显示。
  • “以本地开发者身份登录”按钮只是调用一个操作方法,该方法:
    • 检查应用是否处于本地开发模式。
    • 如果是,则使用适当的声明构造 IPrincipal 类的实例,并调用 ASP.Net 身份系统将身份分配给当前上下文。

【讨论】:

  • 是的。我发现微软也没有直接提供任何东西。虽然我没有使用 Glav 在您的答案中使用的相同代码,但我们确实最终推出了自己的 IPrincipal 并在我们的代码中包含了一些 #if DEBUG 块。不理想,但到目前为止,17 个月后,我还没有为此失眠。
【解决方案2】:

您需要设置备用登录主机。您没有提及您正在使用的 SDK,但这通常由以下设置:

对不起,我不知道iOS开发,但是有a loginHost field in that SDK as well

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-29
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2020-09-06
    • 2015-08-11
    相关资源
    最近更新 更多