【发布时间】: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