Поиск групп Azure/AD с помощью React-AAD-MSAL
Я интегрировал базовую аутентификацию с клиентом React-Aad-MSAL в свое приложение для реагирования, которое позволяет мне успешно получать такие вещи, как имя пользователя и адрес электронной почты. Здесь, в компоненте, я хотел проверить группы пользователей перед отображением некоторых данных.
import React, { useContext } from 'react'
import { observer } from 'mobx-react-lite'
import { Container, Header } from 'semantic-ui-react';
import {
AzureAD,
AuthenticationState,
IAzureADFunctionProps
} from "react-aad-msal";
import { authProvider } from '../../../app/auth/authProvider';
import { RootStoreContext } from '../../../app/stores/rootStore';
const PurchasePipelineDashboard: React.FC = () => {
const rootStore = useContext(RootStoreContext)
const {
idTokenClaimsAction } = rootStore.serverCatalogStore;
return (
// <Container style={{marginTop:'7em'}}>
// <Header content="Purchase Pipeline" />
// </Container>
<AzureAD provider={authProvider} >
{({
accountInfo,
authenticationState,
error
}: IAzureADFunctionProps) => {
return (
<React.Fragment>
{authenticationState === AuthenticationState.Unauthenticated && (
<h1>Oooo weee!</h1>
)}
</React.Fragment>
);
}}
</AzureAD>
)
}
export default observer(PurchasePipelineDashboard);
Мой вопрос; как мне собрать, в каких группах находится пользователь? Я проверил accountInfo.account.idTokenClaims, но ни один из них не возвращает токены. Я вижу другие руководства, использующие Graph, но действительно ли мне нужны обе библиотеки? Любая помощь будет принята с благодарностью!
1 ответ
У вас есть два варианта: вы можете добавить их к утверждениям в токене, как показано здесь: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims, но есть ограничения, например, он вернет не более 150-200 групп.
или вы можете сделать отдельный вызов api графика для получения групп пользователей. Вот пример того, как вызвать график с реакцией https://github.com/microsoftgraph/msgraph-training-reactspa
Для этого вы бы посмотрели на конечную точку графика getmembergroups: https://docs.microsoft.com/en-us/graph/api/user-getmembergroups?view=graph-rest-1.0&tabs=http