如何将AAD用于Azure版本的;Windows身份验证“;从Web应用程序到Web API应用程序?

如何将AAD用于Azure版本的;Windows身份验证“;从Web应用程序到Web API应用程序?,azure,asp.net-web-api,azure-active-directory,Azure,Asp.net Web Api,Azure Active Directory,我有两份申请: MVC站点(通过OAuth->Google保护面向用户的Web应用程序) Web API站点(“专用”Web服务) 这些都托管在Azure中的应用程序服务计划中。这些web服务将只由我自己的应用程序使用——我不需要担心外部使用。事实上,我特别不想要外部消费。我的Web应用程序正在使用OAuth到Google——这在这里不重要 因此,我想直说问题的核心:我的web服务目前在代码中没有身份验证/授权模型,但我不想让任何人都可以公开使用它。在prem上,我们只需使用Windows Au

我有两份申请:

  • MVC站点(通过OAuth->Google保护面向用户的Web应用程序)
  • Web API站点(“专用”Web服务)
  • 这些都托管在Azure中的应用程序服务计划中。这些web服务将只由我自己的应用程序使用——我不需要担心外部使用。事实上,我特别不想要外部消费。我的Web应用程序正在使用OAuth到Google——这在这里不重要

    因此,我想直说问题的核心:我的web服务目前在代码中没有身份验证/授权模型,但我不想让任何人都可以公开使用它。在prem上,我们只需使用Windows Auth通过IIS将其锁定,并将消费web应用的服务帐户设置为以Windows Auth允许访问的用户身份运行。我想在Azure中做同样的事情

    我知道Azure并不完全相同,但我必须相信这是可能的。我甚至使用“身份验证/授权”选项卡中的设置以我想要的方式锁定了我的web服务(我可以尝试导航到它,但我只有在使用有效的组织帐户登录后才能获得我的招摇过市UI)。因此,我的战斗解决了一半,但我不知道如何完成另一半——相当于为我的消费型MVC应用程序设置服务帐户,使其作为服务器运行


    我是否可以通过门户网站执行此操作,而不必专门为此场景编写代码?对于使用上述锁定服务的安全部分,我非常希望有一个PaaS级别或IaaS级别的解决方案。如果我在使用PaaS或IaaS安全解决方案来解决这个问题时走错了路,我也愿意接受其他途径。我并不反对修改代码-我们的RestSharp代码中有一行代码用于Windows身份验证,但是大部分工作/配置都在代码之外,这就是我在这里要说的。

    如果使用IaaS路径,您可以在VM中托管应用程序,就像您以前直接在IIS上运行应用程序一样。好处是,您可以以与以前相同的方式运行,但仍然需要管理VM;i、 e安装更新并注意其安全性

    但是,如果您希望拥有PaaS解决方案,那么您需要修改前端应用程序的代码,以将身份验证令牌传递给后端API,前提是后端接受与前端相同的身份验证。有关如何将身份验证信息从一个应用程序传递到另一个应用程序的示例,请参见

    或者,您可以使用应用程序标识调用后端API。通过这种方式,呼叫与任何用户都不相关,而是在应用程序的上下文中完成。有关如何设置的更多详细信息,请参阅,包括配置和所需代码

    如果您希望允许用户使用其Google帐户登录,那么您可以使用应用程序标识(上面的第二个备选方案)处理对API的授权,前提是API独立于请求用户标识


    直接通过Azure门户中的菜单启用Azure Web应用程序的身份验证会在应用程序前面添加Azure AD身份验证,并要求您将Azure AD生成的访问令牌传递给API,以使其正常工作。

    我绝对希望PaaS托管我的软件。我提出了IaaS,以防有合理的网络选项来确保这一点(即,使用只有这两个应用程序的专用网络,并将web服务完全从互联网上删除,但如果不购买应用程序托管环境,我认为这是不可能的(不是计划),对于这样一个简单的问题来说,这似乎是一个相当大的兔子洞)。一旦我的开发设备更新完成,我将研究你的其他建议。谢谢我认为这是一个公认的答案,因为我相信这有正确的方法信息。我还没有按我希望的方式来做(我99%都是这样做的),但我已经在另一个问题中发布了详细信息: