【问题标题】:AWS Amplify SPA React + Cognito (Microsoft Azure Ad Enterprise SSO Enabled ) + Microsoft Graph APIAWS Amplify SPA React + Cognito(已启用 Microsoft Azure Ad Enterprise SSO)+ Microsoft Graph API
【发布时间】:2020-01-29 11:03:09
【问题描述】:

我使用 React 开发单页应用程序,使用 AWS Amplify 进行无服务器集成。为了让用户登录,我已成功使用 SAML 配置 AWS Cognito 控制台,以便我们的组织用户无需注册即可登录应用程序并访问 AWS 资源。我们使用 Microsoft Azure Ad 作为身份提供者。

现在在应用程序中,我必须实现一个可以使用 Microsoft Graph API 查询 Azure AD 用户的搜索。

GET https://graph.microsoft.com/v1.0/users?$filter=startswith(displayName,'J')

我们拥有访问图表的适当权限。 我们拥有客户端 ID、机密 ID,并且我们已在 Azure 中为应用程序启用了隐式授权流。

由于我使用 AWS Amplify 和 Cognito 对用户进行身份验证,因此当用户登录应用程序时,我会收到 IdToken 和 accessToken。

const user = await Auth.currentAuthenticatedUser();
const idToken = user.signInUserSession.idToken.jwtToken;
const accessToken = user.signInUserSession.accessToken.jwtToken;

但是这个 id-token 和 access-token 属于 Cognito 而不是 Microsoft Azure AD。

Microsoft 提供 MSAL.js(用于 OAuth 2 隐式授权流)用于在 SPA 上进行图形 API 调用,但我们无法在应用程序中使用它,因为我们使用 AWS Amplify (Cognito) 进行身份验证。

那么如何在 AWS Lamda 或任何其他 AWS 服务的帮助下进行图形调用。如果您推荐任何其他方法,那将非常有帮助。

【问题讨论】:

  • 如果您针对 Cognito 进行身份验证,则无法从前端使用 Graph API。您的后端可以使用客户端凭据流和应用程序权限(非委派权限)进行调用。
  • 谢谢,您能否建议如何使用 AWS Amplify (Rest API) 实现相同的功能。

标签: oauth-2.0 azure-active-directory microsoft-graph-api amazon-cognito aws-amplify


【解决方案1】:

来自 Cognito 的 ID 令牌和访问令牌无权访问 Microsoft Graph 数据。

要调用 Microsoft Graph,您的应用必须从 Microsoft 身份平台获取访问令牌。访问令牌包含有关它对通过 Microsoft Graph 可用的资源和 API 的权限的信息。见auth-concepts

正如 juunas 所建议的,您可以实现客户端凭据流来访问 Graph 资源。

【讨论】:

  • 谢谢OAuth 2.0 client credentials flow - 如果我们采用这种方法,我们必须进行服务器端调用,我不明白如何使用 AWS Amplify 来解决这个问题(使用 REST API ) 或 AWS Lambda 函数或任何其他 AWS 方法。 (制作admin consent call,响应重定向到重定向URL,如何处理)
猜你喜欢
  • 1970-01-01
  • 2018-03-02
  • 2022-07-29
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多