【问题标题】:How to use Azure AD authentication for separate non-Azure ASP.NET MVC web application and Web Api sites?如何对单独的非 Azure ASP.NET MVC Web 应用程序和 Web Api 站点使用 Azure AD 身份验证?
【发布时间】:2016-10-19 17:28:03
【问题描述】:

我们有以下内容:

  • 托管在我们公司服务器(不是 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 应用程序到 WebApi
  • SPA 到 WebApi

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

【问题讨论】:

  • 升级了。我需要做类似的事情。

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


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 2020-07-27
    • 2015-05-15
    • 2019-05-28
    • 2017-04-08
    • 1970-01-01
    相关资源
    最近更新 更多