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

Asp.net mvc 如何为单独的非Azure ASP.NET MVC web应用程序和web Api站点使用Azure AD身份验证?,asp.net-mvc,azure,asp.net-web-api,azure-active-directory,Asp.net Mvc,Azure,Asp.net Web Api,Azure Active Directory,我们有以下几点: ASP.NET MVC 5 web应用程序托管在公司服务器(非Azure)上,例如ourcompany.com。这不是AngularJS或单页应用程序 ASP.NET MVC WebApi 2托管在我们公司的服务器(非Azure)上,例如api.ourcompany.com。这是一个独立于网站的项目,因此可以由多个应用程序/网站访问 我们公司的Azure Active Directory 我们要做的是: 用户访问网站并通过Azure AD身份验证登录 Web应用程序使用Ja

我们有以下几点:

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

  • 用户访问网站并通过Azure AD身份验证登录
  • Web应用程序使用JavaScript呈现页面
  • 页面JS调用Web API
  • 我在Azure文档中看到以下文档/示例:

    • Azure广告的Web应用程序
    • Web应用程序到WebApi
    • 从SPA到WebApi

    如果API组件包含在web应用程序项目中,那么来自页面的JS调用将可以访问用户凭据。然而,与API不同的是,问题是如何利用#1中的身份验证来允许#3使用JS调用WebApi并访问所有身份验证信息?

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

    该示例为web应用程序上的用户提供单一登录,并将用户身份从web应用程序委派给web api。它通过在web应用程序控制器中检索承载令牌并使用它调用web api来实现。 通过将承载令牌放在授权头上,我们可以轻松地使用相同的承载令牌进行javascript ajax调用:

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

    我能够在没有adal.js library的情况下实现这一点。仍然需要Cors来进行跨域ajax调用。

    。我需要做类似的事情。