如何在本地对Azure应用程序服务进行身份验证?

如何在本地对Azure应用程序服务进行身份验证?,azure,azure-web-app-service,azure-api-apps,azure-mobile-services,Azure,Azure Web App Service,Azure Api Apps,Azure Mobile Services,关于如何配置给定Azure应用程序服务实例的身份验证属性,有很多教程: 以下是配置Azure服务器端属性的指南: 我相信这些都是在我们的Azure应用程序服务组件前面的服务器端网关上设置属性。这种方法很好,因为只需将用户的浏览器指向~/.auth/login/XYZ,就可以启动登录流 然而,我不知道如何在开发时通过localhost在我的PC上本地运行MVC应用程序和API应用程序来验证这些应用程序。我没有本地运行的网关。没有侦听localhost/.auth/login/XYZ的

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

以下是配置Azure服务器端属性的指南:

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

然而,我不知道如何在开发时通过localhost在我的PC上本地运行MVC应用程序和API应用程序来验证这些应用程序。我没有本地运行的网关。没有侦听localhost/.auth/login/XYZ的端点


那么,故事是什么?你在那里如何认证?具体地说,您是如何开发这样一种方式的,即您需要在本地执行的任何操作都可以发布到您的Web和Api应用程序中,并在Azure应用程序服务的生态系统中运行身份验证体验?

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

  • client.alternateLoginHost=“”(,)
  • client.setAlternateLoginHost(新URL(“”);()
很抱歉,我不知道iOS开发,但有。

,唯一的方法是编写一些仅适用于开发环境的代码来伪造
IPrincipals
,声明与Azure环境在生产中提供的声明相同

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

    <add key="EnableLocalLogin" value="true" />
  • 在azure门户应用程序设置中将此值定义为false。此值将覆盖web.config中配置的值

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

可能类似于问题@Gandhalismant,我认为这不是同一件事。我的问题是关于2015年3月发布的Azure应用程序服务。这种新的方式使您的Azure资产位于Microsoft管理的网关后面,该网关为您执行oAuth“舞蹈”。在Azure中工作得很好。目前还不清楚在web应用或api应用的开发阶段是否已经存在任何可以帮助/(处理它)的东西,代码在本地运行。您可以有2个广告应用程序。一个是生产,一个是发展。然后,在web应用程序的应用程序设置中保留您的凭据信息,例如客户端id、密钥、租户id和登录URL。同样,对于本地环境,您可以将凭据保留在系统环境中。现在,您可以从系统环境获取凭据,而不是从web.config获取凭据。希望这就是你想要的。是的。我发现微软也没有直接提供任何信息。虽然我没有使用与Glav在您的回答中使用的代码相同的代码,但我们最终还是使用了自己的IPrincipal,并在代码中使用了一些#if调试块。不太理想,但到目前为止,17个月后,我还没有因此失眠。