AWS Amplify SPA React + Cognito (включен единый вход Microsoft Azure Ad Enterprise) + Microsoft Graph API - PullRequest
0 голосов
/ 30 сентября 2019

Я использую 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. Было бы очень полезно, если бы вы порекомендовали любой другой подход.

1 Ответ

0 голосов
/ 01 октября 2019

Идентификационный токен и токен доступа от Cognito не имеют доступа к данным Microsoft Graph.

Для вызова Microsoft Graph ваше приложение должно получить токен доступа с платформы идентификации Microsoft. Маркер доступа содержит информацию о разрешениях для ресурсов и API-интерфейсов, доступных через Microsoft Graph. См. концепции аутентификации .

. Как предположил juunas, вы можете реализовать поток учетных данных клиента для доступа к ресурсам Graph.

...