【问题标题】:Finding Azure/AD groups with React-AAD-MSAL使用 React-AAD-MSAL 查找 Azure/AD 组
【发布时间】:2020-06-10 14:05:39
【问题描述】:

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

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 的教程,但我真的需要这两个库吗?任何帮助将不胜感激!

【问题讨论】:

    标签: reactjs msal react-aad-msal


    【解决方案1】:

    您在这里有两个选项,您可以按照此处将它们添加到令牌中的声明中:https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims#configuring-groups-optional-claims 但是有一些限制,例如它最多只能返回 150-200 个组。

    或者您可以进行单独的图形 api 调用来获取用户组。下面是一个如何用react https://github.com/microsoftgraph/msgraph-training-reactspa调用graph的例子

    您将为此查看图表的 getmembergroups 端点:https://docs.microsoft.com/en-us/graph/api/user-getmembergroups?view=graph-rest-1.0&tabs=http

    【讨论】:

    • 所以我已经根据您的第一个链接进行了配置,但在 accountInfo.jwtaccesstoken 上仍然未定义。从我正在阅读的内容来看,我需要使用 MSAL 2.0 进行身份验证流程,React-AAD-MSAL 是否支持开箱即用?查看“关于授权流程的说明”docs.microsoft.com/en-us/azure/active-directory/develop/…
    • 我不认为 react-aad-msal 来自微软。 github.com/syncweek-react-aad/react-aad/tree/… 我跟着那里的样本,用纱线运行,样本基本上显示了一些诊断,你可以登录,然后它给你 id 令牌,你可以把 id 令牌插入 jwt.ms 它解码令牌并向您显示声明,我对其进行了测试,如果您在应用程序注册中为群组声明设置它,它确实会显示群组声明。奇怪的是,我也无法从示例中获取访问令牌。试试 accountInfo.jwtIdToken
    • 我认为我们的用户组太多 - 我们没有看到任何组,只是“hasgroups:true”。
    • 是的,根据这里:stackoverflow.com/questions/45501568/… 显然如果使用授权码/隐式授权,则限制为 6。如果使用其他类似 150-200。
    • 看起来下一个你能做的最简单的事情就是走图路线
    猜你喜欢
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 2021-07-23
    • 2022-01-08
    相关资源
    最近更新 更多