asp.net-mvc - 如何对单独的非 Azure ASP.NET MVC Web 应用程序和 Web Api 站点使用 Azure AD 身份验证?

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

我们有以下内容:

  • 托管在我们公司服务器(而非 Azure)上的 ASP.NET MVC 5 Web 应用程序,例如 ourcompany.com。这不是 AngularJS 或单页应用程序。
  • ASP.NET MVC WebApi 2 托管在我们公司的服务器(不是 Azure)上,例如 api.ourcompany.com。这是一个独立于网站的项目,因此可以由多个应用/网站访问。
  • 我们公司的 Azure Active Directory

我们想做的是:

  1. 用户访问网站并通过 Azure AD 身份验证登录。
  2. 网络应用程序使用 JavaScript 呈现页面。
  3. 页面 JS 调用 Web API

我在 Azure 文档中看到以下文档/示例:

  • 到 Azure AD 的 Web 应用
  • Web 应用程序到 WebApi
  • SPA 到 WebApi

如果 API 组件包含在 Web 应用程序项目中,则页面中的 JS 调用将有权访问用户凭据。然而,如果API是独立的,问题是如何利用#1中的身份验证来允许#3使用JS调用WebApi并访问所有身份验证信息?

最佳答案

通过使用 Azure AD 和 OpenID Connect 从 WebApp 到 WebApi 示例,我能够获得类似的工作场景。

Calling a web API in a web app using Azure AD and OpenID Connect

该示例为 Web 应用程序上的用户提供单点登录,并将用户身份从 Web 应用程序委托(delegate)给 Web api。它通过在 Web 应用程序 Controller 中检索不记名 token 并使用它来调用 Web API 来实现此目的。 通过将不记名 token 放在授权 header 上,我们可以轻松地使用相同的不记名 token 进行 javascript ajax 调用:

//jQuery example
settings.headers = {
    'Authorization': 'Bearer ' + bearerToken,
};

我能够在没有 adal.js 库的情况下让它工作。仍然需要 Cors 来进行跨域 ajax 调用。

关于asp.net-mvc - 如何对单独的非 Azure ASP.NET MVC Web 应用程序和 Web Api 站点使用 Azure AD 身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37888956/

相关文章:

c# - 如何返回带有错误消息或异常的 NotFound() IHttpActionResult?

asp.net-mvc - 使用 MvcContrib.TestHelper 的 ShouldMapTo() 通用扩展方法需要帮助解决错误

c# - 如果文本框有值(value),如何将其设置为只读?

azure - Azure 数据是如何计算的?

c# - 如何将参数从 IsAuthorized 传递到 HandleUnauthorizedRequest 方法 web api

c++ - 超时后检查服务器是否收到数据

c# - if else with razor 简写

javascript - 无法在局部 View 中使用部分的干净替代方案?

Azure Serverless SQL - 对非分区列性能进行过滤

python - 类型错误 : Unicode-objects must be encoded before hashing in python for azure iot hub