Azure AD:将 SPA 与委托用户身份方案混合

Azure AD: Mixing SPA with delegated user identity scenario

我打算开发一个以 Web API 作为后端的单页应用程序,它将代表用户调用其他一些 Web API。但是我很难做到这一点。

我从 MS 查看了这个 list of Azure AD scenarios,但当时的 none 似乎适合我的 case.I 认为我的场景是 SPA 和 "Web Application to Web API" 的混合体link 中的情景。

据我了解,我必须完成 SPA 客户端首先从 Azure AD 身份验证端点检索授权代码和 ID 令牌,然后将它们发送到我的后端。然后后端将请求 Azure AD 令牌端点以获得所需的访问令牌。

这是正确的吗?但是我该怎么做(使用 adal.js)?我只找到使用隐式流程的客户端示例,其中跳过获取授权代码,直接以访问令牌结束。这可能吗?

你的理解已经很接近了。在 Azure Portal (see code sample for help on configuring the scenario), you'll log in a user and request an access token the web API. Then when the web API receives this access token, it can perform an On-Behalf-Of request 中将场景配置为 Azure AD 请求访问下游 Web API。成功后,Azure AD 将向网络 API 颁发一个新的访问令牌,它可用于下游 API。

在支持方面,单页应用程序将需要使用 ADAL.js 来登录用户并获取访问令牌。在 Web API 端,Azure AD 通过 ADAL .NET 和 ADAL Java 支持 On-Behalf-Of flow。一个细微差别是您可能想要保护端点并验证您的网络上的令牌 API,Azure AD 已经为 .NET 构建了一个 OWIN 中间件,但需要一个开源的等同于 Java 网络API。

Here 是行动中的代表流程的一个很好的示例。它有一个单页应用程序和一个调用 .NET web API 的本机应用程序。