【问题标题】:How to retrieve access_token from Azure Active Directory (AAD) Web API如何从 Azure Active Directory (AAD) Web API 检索 access_token
【发布时间】:2019-06-18 10:24:58
【问题描述】:

我正在构建一个具有以下属性的网络应用程序:

  • 前端基于 VueJS
  • 后端框架仍未确认,但将是 RESTFul API
  • 应用的用户将通过 Azure Active Directory (AAD) 进行身份验证

这是我到目前为止所做的:

我在我的 AAD 中设置了一个 Web 应用程序/API。除了遵循here 的指导方针之外,我已经完全保护了我的 VueJS 应用程序,现在我需要登录到我的 AAD 才能使用该应用程序。

现在的问题是,前端是安全的。但是后端呢?我正在尝试从 AAD 获取 access_token ,然后我可以将其用作稍后对后端的每个请求的授权标头。

这是我使用 adal 库中的 AuthenticationContext 登录时从 AAD 获得的信息。

如您所见,我得到一个 id_token,当我使用 adalacquireToken 功能时,我得到一个 id_token 再次。

我在这里做错了什么吗?我是否需要在 Azure 上创建另一个 Web 应用程序/API?

我该怎么做?

谢谢!

【问题讨论】:

标签: javascript node.js azure vue.js azure-active-directory


【解决方案1】:

根据官方文档,这可能是您的情况。

"Azure AD 中的 OAuth 2.0 隐式流旨在在请求令牌的资源与客户端应用程序相同时返回 ID 令牌。换句话说,当 JS 客户端使用 ADAL JS 请求使用与客户端相同的 App ID 注册的自己的后端 Web API 的令牌,ID 令牌由库返回并缓存。请注意,在这种情况下,资源应设置为客户端的 App ID(App ID URI 将不工作)。然后,此 ID 令牌可用作对应用程序后端 API 的调用中的不记名令牌。”

您可以在这里找到更多相关信息!

https://github.com/AzureAD/azure-activedirectory-library-for-js/wiki/Acquire-tokens

【讨论】:

  • 虽然你真的不应该使用 id 令牌进行授权。这就是为什么我通常为 API 定义一个单独的应用程序并请求访问令牌的原因。
  • 所以在我的例子中,我有一个在 Azure 上的 API,它是我的前端 Vue JS,还有一个 API,它是我的后端。从我的前端 API 中,我将支持 API 的 acquireToken 作为资源运行,以获取它的访问令牌。那么我用它在验证期间将我的前端作为“受众”作为承载 + 令牌请求发送到后端?
  • 没错。尝试将令牌按原样传递到后端,希望它可以工作。
猜你喜欢
  • 2019-02-23
  • 1970-01-01
  • 2016-11-07
  • 2017-01-06
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多