Я использую React для разработки одностраничного приложения и AWS Amplify для безсерверной интеграции. Чтобы войти в систему, я успешно настроил консоль AWS Cognito с SAML, чтобы пользователи нашей организации могли войти в приложение без регистрации и получить доступ к ресурсам AWS. Мы используем Microsoft Azure Ad в качестве поставщика удостоверений.
Теперь внутри приложения я должен реализовать поиск, который может запрашивать пользователей Azure AD с помощью Microsoft Graph API.
GET https://graph.microsoft.com/v1.0/users?$filter=startswith(displayName,'J')
У нас есть соответствующее разрешение для доступа к графику. У нас есть идентификатор клиента, секретный идентификатор и мы включили неявный поток предоставления прав для приложения в Azure.
Поскольку я использую AWS Amplify и Cognito для аутентификации пользователя, я получаю IdToken и accessToken при входе пользователя в систему. в приложение.
const user = await Auth.currentAuthenticatedUser();
const idToken = user.signInUserSession.idToken.jwtToken;
const accessToken = user.signInUserSession.accessToken.jwtToken;
Но этот id-токен и токен доступа принадлежат Cognito, а не Microsoft Azure AD.
Microsoft предоставляет MSAL.js (для неявного потока предоставления OAuth 2) для выполнения вызовов API графа на SPA, но мы не можем использовать это в нашем приложении, так как мы используем AWS Amplify (Cognito) дляАутентификация.
Итак, как совершать графические вызовы с помощью AWS Lamda или любых других сервисов AWS. Было бы очень полезно, если бы вы порекомендовали любой другой подход.