如何将Azure AD身份验证用于单独的非Azure ASP.NET MVC Web应用程序和Web Api站点?

Chr*_*isP 5 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

我们想要做的是:

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

我在Azure文档中看到了docs/samples:

  • Web App到Azure AD
  • Web App到WebApi
  • SPA到WebApi

如果API组件包含在Web应用程序项目中,则来自页面的JS调用将可以访问用户凭据.但是,如果API分离,问题是如何利用#1中的身份验证来允许#3使用JS调用WebApi并访问所有身份验证信息?

Rus*_*uan 0

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

使用 Azure AD 和 OpenID Connect 在 Web 应用程序中调用 Web API

该示例为 Web 应用程序上的用户提供单点登录,并将用户身份从 Web 应用程序委托给 Web api。它通过在 Web 应用程序控制器中检索不记名令牌并使用它来调用 Web API 来实现此目的。通过将不记名令牌放在 Authorization 标头中,我们可以轻松地使用相同的不记名令牌进行 javascript ajax 调用:

//jQuery example
settings.headers = {
    'Authorization': 'Bearer ' + bearerToken,
};
Run Code Online (Sandbox Code Playgroud)

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