繁体   English   中英

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

[英]How to use Azure AD authentication for separate non-Azure ASP.NET MVC web application and Web Api sites?

我们有以下内容:

  • 托管在我们公司服务器(不是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. Web应用程序使用JavaScript呈现页面。
  3. 页面JS调用Web API

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

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

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

通过使用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,
};

我可以在没有adal.js自由程序的情况下使用它。 仍然需要Cors来进行跨域Ajax调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM