Azure active directory 服务器上用于Graph API的ADAL令牌

Azure active directory 服务器上用于Graph API的ADAL令牌,azure-active-directory,microsoft-graph-api,adal,Azure Active Directory,Microsoft Graph Api,Adal,我正在开发一个Angular2+应用程序,该应用程序使用Azure AD进行身份验证。我需要将令牌传递到我的Web API层(使用HttpInterceptor),然后在服务器端使用该令牌调用Microsoft Graph 如何将一个令牌转换为另一个令牌(理想情况下是在服务器上)?正是代表流的场景 以下是我在上面写的博客文章: 这是一个相当长的句子,所以让我们看一个示例场景: JavaScript单页应用程序使用Azure AD对用户进行身份验证 SPA获取其后端API的访问令牌并调用该API

我正在开发一个Angular2+应用程序,该应用程序使用Azure AD进行身份验证。我需要将令牌传递到我的Web API层(使用
HttpInterceptor
),然后在服务器端使用该令牌调用Microsoft Graph


如何将一个令牌转换为另一个令牌(理想情况下是在服务器上)?

正是代表流的场景

以下是我在上面写的博客文章:

这是一个相当长的句子,所以让我们看一个示例场景:

  • JavaScript单页应用程序使用Azure AD对用户进行身份验证
  • SPA获取其后端API的访问令牌并调用该API
  • 然后,API需要从Microsoft Graph API获取有关用户经理的信息
在这种情况下,基本上有两种选择:

  • 使用“代表授权”获取允许API以用户身份调用MS Graph的访问令牌
  • 使用客户端凭据授权将调用作为API进行,无需用户上下文
  • 第一个选项使用委托权限,这意味着可以返回的数据基于允许API和用户访问的内容。它确实要求使用用户上下文调用此API

    第二种选择是使用应用程序权限,在这种情况下,应用程序本身需要为组织中的任何用户访问此信息

    您可能理解为什么通常首选使用委派权限。它遵循最小特权原则

    您可以在上找到本文中使用的示例应用程序

    因此,您基本上可以交换从SPA获得的令牌,以及API的凭据,以获得另一个API的新访问令牌。此新令牌也将位于用户上下文中,并将使用委派的权限

    下面是一个执行令牌交换的HTTP请求示例:

    POST https://login.microsoftonline.com/joonasapps.onmicrosoft.com/oauth2/token HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    Host: login.microsoftonline.com
    Content-Length: 1650
    Expect: 100-continue
    Connection: Keep-Alive
    
    grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&client_id=f3c39179-62f7-45fc-a469-a64fdfce4f91&client_secret=REDACTED&resource=https%3A%2F%2Fgraph.microsoft.com&assertion=eyJ0eLongAccessTokenForThisApi&requested_token_use=on_behalf_of
    

    您可以在这里找到更多信息:

    这篇文章很棒,很可能会有用。我们不使用AspNetCore,因此我正在(缓慢地)将启动代码转换为非核心代码。如果您使用的是“经典”MVC,这将有助于: