【问题标题】:Best practice to retrieve a token, access backend and Graph API检索令牌、访问后端和 Graph API 的最佳实践
【发布时间】:2021-03-02 15:29:13
【问题描述】:

在前端使用 OAuth 2.0 使用授权代码流和 PKCE 并在后端访问 Graph API 的 SSO(单点登录)的最佳实践是什么?

之前我使用 react-adal 和隐式流程在前端检索令牌并使用它访问后端。后端使用 azure-active-directory-spring-boot-starter 库。 请求后后端访问 Graph API 以获取所需的信息。它是 Azure AD 中的一个 Web 应用程序。

目前我使用 msal-react 在前端访问 id 令牌和访问令牌。所以这意味着我现在正在使用带有授权代码流的 SPA(Azure AD 中的单页应用程序)。在前端,我同时检索:访问令牌和 id 令牌。要访问后端,我需要 id 令牌。但我也需要访问令牌,以便后端可以访问 Graph API。我认为将它们都发送到 Header 中或根本发送都不是一个好主意。前端和后端都使用相同的 Azure 应用程序。后端有一个秘密。重要的是我不需要前端直接访问 Graph API。 但是,这是一种同时发送用于后端身份验证的 id 令牌和访问令牌以在后端访问 Graph API 的好方法吗?

【问题讨论】:

标签: azure oauth-2.0 azure-active-directory msal pkce


【解决方案1】:

是的,看起来很棒,我们总是使用 MSAL 来获取令牌,然后将它们传递到后端进行身份验证并调用您想要的 API,请随意使用。

【讨论】:

  • 两个都寄吗? id 令牌和访问令牌?您只能使用 id 令牌访问后端。但是如果没有访问令牌,您将无法访问 Graph API。
  • @JetBrains 为什么不呢?您对此有何担忧?
  • @Jot-Wang 这不是双重工作,自然会导致安全漏洞吗?我的意思是后端有一个客户端密码。为什么不使用它来检索令牌以访问 Graph API(= 用户数据)?
  • @JetBrains 您的意思是使用客户端凭据流在后端获取访问令牌?如果是这样,访问令牌来自应用程序凭据,而不是用户凭据,用户的登录是没有意义的。如果你打算再次使用用户参与的流程,我认为这是一项双重工作,因为你已经在前端获得了访问令牌。
  • 如何将访问令牌发送到后端? “授权”标头是 id 令牌。访问令牌呢?
猜你喜欢
  • 2012-08-02
  • 2019-09-09
  • 2020-11-09
  • 2011-08-13
  • 1970-01-01
  • 2020-09-28
  • 2011-06-28
  • 2012-12-04
  • 1970-01-01
相关资源
最近更新 更多