Поиск групп 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

Другие вопросы по тегам