【问题标题】:How can I use AAD for an Azure version of "Windows Authentication" from a Web App to a Web API App?如何将 AAD 用于从 Web 应用程序到 Web API 应用程序的 Azure 版本的“Windows 身份验证”?
【发布时间】:2016-10-19 06:25:25
【问题描述】:

我有两个应用程序:

  1. MVC 站点(通过 OAuth -> Google 保护的面向用户的 Web 应用)
  2. Web API 站点(“私有”Web 服务)

这些托管在 Azure 的应用服务计划中。这些 Web 服务只会被我自己的应用程序使用——我不需要担心外部使用。其实我特别不想在外面消费。我的 Web 应用正在使用 OAuth 到 Google - 这在此处应该无关紧要。

所以要解决我的问题的核心:我的网络服务目前在代码中没有身份验证/授权模型,但我不希望它只是公开提供给任何人。在本地,我们只是通过 IIS 使用 Windows Auth 将其锁定,并将使用 Web 应用程序的服务帐户设置为以 Windows Auth 允许访问的用户身份运行。我想在 Azure 中做同样的事情。

我了解 Azure 并不完全相同,但我必须相信这是可能的。我什至使用 Authentication/Authorization 选项卡中的设置锁定了我的 Web 服务(我可以尝试导航到它,但只有在使用有效的组织帐户登录后才能获得我的 Swagger UI)。所以我的战斗已经解决了一半,但我不知道如何做另一半 - 相当于为我的消费 MVC 应用程序设置服务帐户以运行。

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

【问题讨论】:

    标签: azure asp.net-web-api azure-active-directory


    【解决方案1】:

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

    但是,如果您想要一个 PaaS 解决方案,那么您需要修改前端应用程序的代码以将身份验证令牌传递给后端 API,假设后端接受与前端。有关如何将身份验证信息从一个应用程序传递到另一个应用程序的示例,请参阅 https://azure.microsoft.com/en-us/documentation/articles/app-service-api-dotnet-get-started/

    或者,您可以使用应用身份来调用您的后端 API。这样,调用与任何用户无关,而是在应用程序的上下文中完成。有关如何设置它的更多详细信息,包括配置和所需代码,请参阅 https://github.com/Azure-Samples/active-directory-dotnet-daemon

    如果您想允许您的用户使用他们的 Google 帐户登录,那么您可以使用应用身份(上面的第二种选择)处理对 API 的授权,假设 API 独立于请求用户的身份。

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

    【讨论】:

    • 我绝对希望 PaaS 托管我的软件。我提出了 IaaS,以防有合理的网络选项来保护这一点(即使用只有这两个应用程序的专用网络,并将 Web 服务完全从互联网上拉下来,但我认为不购买应用程序是不可能的托管Environments(不是Plans),对于这样一个简单的问题,这似乎是一个相当大的兔子洞)。一旦我的开发箱上的一些更新完成,我将探索您的其他建议。谢谢!
    • 我将此标记为已接受的答案,因为我相信这包含有关方法的正确信息。我还没有让它按照我想要的方式工作(我已经完成了 99% 的工作),但我已经在另一个问题中发布了详细信息:stackoverflow.com/questions/40292678/…
    猜你喜欢
    • 2018-08-11
    • 1970-01-01
    • 2017-02-05
    • 2019-05-28
    • 2016-10-31
    • 2015-02-05
    • 2013-12-04
    • 2017-10-29
    • 1970-01-01
    相关资源
    最近更新 更多