Reactjs 使用React AAD MSAL查找Azure/AD组

Reactjs 使用React AAD MSAL查找Azure/AD组,reactjs,msal,react-aad-msal,Reactjs,Msal,React Aad Msal,我已将React Aad MSAL客户端的基本身份验证集成到my React应用程序中,该应用程序允许我成功获取用户名和电子邮件等信息。在这个组件中,我想在显示一些数据之前检查用户组 import React, { useContext } from 'react' import { observer } from 'mobx-react-lite' import { Container, Header } from 'semantic-ui-react'; import { Azure

我已将React Aad MSAL客户端的基本身份验证集成到my React应用程序中,该应用程序允许我成功获取用户名和电子邮件等信息。在这个组件中,我想在显示一些数据之前检查用户组

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);
import React,{useContext}来自“React”
从“mobx-react-lite”导入{observer}
从“语义ui反应”导入{Container,Header};
进口{
阿苏雷德,
身份验证状态,
IazuReadFunctionsProps
}从“react aad msal”;
从“../../app/auth/authProvider”导入{authProvider};
从“../../app/stores/rootStore”导入{RootStoreContext};
const PurchasePipelineDashboard:React.FC=()=>{
const rootStore=useContext(RootStoreContext)
常数{
idTokenClaimsAction}=rootStore.serverCatalogStore;
返回(
// 
//     
// 
{({
accountInfo,
身份验证状态,
错误
}:IAzureADFunctionProps)=>{
返回(
{authenticationState===authenticationState.Unauthenticated&&(
哇!
)}
);
}}
)   
}
导出默认观察者(PurchasePipelineDashboard);

我的问题是,;我如何收集用户所在的组?我已经检查了accountInfo.account.idTokenClaims,但是没有一个返回令牌。我看到其他使用Graph的教程,但我真的需要这两个库吗?任何帮助都将不胜感激

这里有两个选项,您可以将它们添加到令牌中的声明中,如下所示: 但也有一些限制,比如它最多只能返回150-200组

或者,您可以进行单独的图形api调用以获取用户组。下面是一个如何使用react调用graph的示例


您可能会看到graph的getmembergroups端点:

因此我已经为您的第一个链接进行了配置,但accountInfo.jwtaccesstoken上仍然没有定义。从我所阅读的内容来看,我需要将MSAL2.0用于身份验证流,React和MSAL是否支持开箱即用?查看“关于授权流程的说明”,我认为react aad msal不是来自microsoft。我在那里跟踪了这个示例,使用Thread运行,该示例基本上显示了一些诊断,您可以登录,然后它给您id令牌,您可以获取id令牌并将其插入jwt.ms。它解码令牌并向您显示声明,我对其进行了测试,如果您在应用程序中为组声明注册,它确实会显示组声明。奇怪的是,我也无法从样本中获取accesstoken。尝试accountInfo.jwtidtoken我认为我们的用户有太多的组-我们没有看到任何组只是“hasgroups:true”。是的,根据这里:显然,如果使用授权代码/隐式授权,那么限制是6。如果使用其他工具,它可能是150-200。看起来下一个最简单的方法是使用图形路径