【问题标题】:How to get user profile details using Azure AD如何使用 Azure AD 获取用户配置文件详细信息
【发布时间】:2020-07-24 22:41:11
【问题描述】:

我正在使用 react-aad-masl 模块将 Microsoft SSO 集成到我的 react 应用程序中。我可以将我的用户重定向到 Microsoft 登录页面,然后它会带着令牌返回我的页面。之后它只返回包含用户名和电子邮件 ID 的 accountInfo。我需要获取用户的其他详细信息以及 ID、名字、姓氏、组等。

这些所有细节都将通过此 Azure AD MASL 获得,还是我需要调用 Graph API?

下面是我的实现

//authProvider.js

import { MsalAuthProvider, LoginType } from 'react-aad-msal';
import { Logger, LogLevel } from "msal";

// Msal Configurations
const config = {
  auth: {
    authority: 'https://login.microsoftonline.com/*********',
    clientId: '*************',
    redirectUri: 'http://localhost:3000/'
  },
  // Enable logging of MSAL events for easier troubleshooting.
  // This should be disabled in production builds.
  system: {
    logger: new Logger(
      (logLevel, message, containsPii) => {
        console.log("[MSAL]", message);
      },
      {
        level: LogLevel.Verbose,
        piiLoggingEnabled: false
      }
    )
  },
  cache: {
    cacheLocation: "sessionStorage",
    storeAuthStateInCookie: true
  }
};
 
// Authentication Parameters
const authenticationParameters = {
  scopes: [
    'user.read',
    'profile',
    'openid'
    //'profile.read', 
    // 'User.Read.All',
    // 'Group.Read.All',
    // 'User.ReadBasic.All',
    // 'Group.Read'
  ]
}
 
// Options
const options = {
  loginType: LoginType.Redirect,
  tokenRefreshUri: window.location.origin + '/auth.html'
}
 
export const authProvider = new MsalAuthProvider(config, authenticationParameters, options)

//APP.js

<AzureAD provider={authProvider}  forceLogin={false}>
      {(abc) => {
          console.log('>>>>>>>>>>>>...', abc);
          
          props.setAccountInfo(abc.accountInfo.account);
          return <AppRouter />
      }}
      </AzureAD>

在 abc 我得到以下信息

请帮帮我

【问题讨论】:

    标签: reactjs azure-active-directory microsoft-graph-api


    【解决方案1】:

    您需要在应用程序令牌配置中为名字、姓氏配置可选声明。

    请通过documentation了解更多信息

    关于群信息请查看document

    【讨论】:

    • Raghavendra - 感谢您的回复,在此声明中是否还有获取用户 ID 和组的方法?因为主要是我需要用户的这两个属性。此信息也将在 accountInfo 属性下提供?
    • 您可以通过在应用清单中进行更改来获取应用程序。请参考document,安全组请参考document。在 Token 'oid' 是跨租户的唯一用户 ID,如果单个用户存在于多个租户中,则用户将在每个租户中包含不同的对象 ID
    • Raghavendra - 如果我更新清单文件,那么我将能够从 Azure AD 中获取 accountInfo 本身的批准,或者我需要进行单独的图形 API 调用
    • 通过应用角色的清单更改,您将能够获取令牌中的角色信息。无需图形 api 调用
    猜你喜欢
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 2015-09-01
    • 2022-10-01
    相关资源
    最近更新 更多