使用 Graph Api 针对租户进行角色计数

2023-12-21

有没有办法找到每个role存在反对tenant and number of users已分配给每个role using GraphServiceClient or GraphConnection班级?我正在使用 C#。


目录角色- 查找租户的所有目录角色及其成员数量

我已经给出了 Microsoft Graph API 的示例代码(https://graph.microsoft.com https://graph.microsoft.com)以及 Azure AD Graph API(https://graph.windows.net https://graph.windows.net),但强烈建议使用较新的 Microsoft Graph API,除非您无法从中获取某些特定内容,然后再查看 Azure AD Graph API。

在这里查看更详细的比较Microsoft Graph 或 Azure AD Graph https://blogs.msdn.microsoft.com/aadgraphteam/2016/07/08/microsoft-graph-or-azure-ad-graph/

正如您在评论中所询问的,以下是 nuget 包和类的详细信息:

  • Microsoft.Graphnuget 包 - 使用Microsoft Graph API并使用GraphServiceClient class.

  • Microsoft.Azure.ActiveDirectory.GraphClientnuget 包 - 与 Azure AD Graph API 配合使用ActiveDirectoryClient class.

微软图形API

API's - 列出目录角色 https://learn.microsoft.com/en-us/graph/api/directoryrole-list?view=graph-rest-1.0 and 列出成员 https://learn.microsoft.com/en-us/graph/api/directoryrole-list-members?view=graph-rest-1.0

var roles = await graphServiceClient.DirectoryRoles.Request().GetAsync();

var members = graphServiceClient.DirectoryRoles[role.Id].Members.Request().GetAsync();

Azure AD 图形 API

API's - 获取目录角色 https://learn.microsoft.com/en-us/previous-versions/azure/ad/graph/api/directoryroles-operations#get-directory-roles-- and 获取目录角色的成员 https://learn.microsoft.com/en-us/previous-versions/azure/ad/graph/api/directoryroles-operations#get-a-directory-roles-members--

var directoryRoles =  activeDirectoryClient.DirectoryRoles.ExecuteAsync();

var members = await activeDirectoryClient.DirectoryRoles[role.ObjectId].Members.ExecuteAsync();

注意:在测试代码时,我还注意到 2 个 API 的行为略有不同。当您请求目录角色的成员时,Microsoft Graph 仅返回用户。另一方面,Azure AD Graph 返回用户和服务主体。请参阅我的代码以了解 Azure AD Graph 的特殊检查。

另请注意,您获得的许多结果将是分页集合,因此您可能需要在多页结果的情况下处理分页。


应用程序角色- 查找应用程序的所有应用程序角色,然后通过应用程序角色分配查找用户数。

应用程序角色 https://learn.microsoft.com/en-us/azure/architecture/multitenant-identity/app-roles特定于在 Azure AD 中注册的应用程序。可以通过浏览租户中该应用程序的服务主体来读取该应用程序的角色分配集合。

Azure AD 图形 API

应用程序角色

var app = activeDirectoryClient.Applications["<applicationObjectId>"].ExecuteAsync().Result;
var appRoles = app.AppRoles;

应用程序角色分配

ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(new Uri("https://graph.windows.net/<tenantGuid>"),
async () => await GetTokenForApplication());

var servicePrincipal = activeDirectoryClient.ServicePrincipals.Where(x => x.AppId == "<applicationId>").ExecuteAsync().Result.CurrentPage[0];
var appRoleAssignments = activeDirectoryClient.ServicePrincipals[servicePrincipal.ObjectId].AppRoleAssignedTo.ExecuteAsync().Result;
int userCountForApp = 0;
foreach(var appRoleAssignment in appRoleAssignments.CurrentPage)
{
    if (appRoleAssignment.PrincipalType == "User")
    {
        userCountForApp++;
        Console.WriteLine("Role Id = {0} and User Name = {1}", appRoleAssignment.Id, appRoleAssignment.PrincipalDisplayName);
    }
}

微软图形API

读取分配给用户的所有应用程序特定角色(即 AppRoleAssignments)的功能仅作为 Microsoft Graph API beta 端点的一部分提供。因此它不够稳定,无法在生产代码中使用,并且您找不到对 C# 的 Client SDK 支持。阅读更多具体要点Marc LaFleur 的这篇 SO 帖子 https://stackoverflow.com/questions/47161815/how-to-call-microsoft-graph-beta-api-from-c-sharp/47167606#47167606

以下是相关的 API:

  • 应用程序角色分配 https://learn.microsoft.com/en-us/graph/api/approleassignment-get?view=graph-rest-beta
  • AppRoles https://learn.microsoft.com/en-us/graph/api/resources/approle?view=graph-rest-beta
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Graph Api 针对租户进行角色计数 的相关文章

  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 以深度优先顺序生成数组笛卡尔积的算法

    我正在寻找一个示例 说明如何在 Ruby 类似 C 的语言或伪代码 中创建可变数量的整数数组 每个数组的长度不同 的笛卡尔积 并以特定顺序逐步遍历结果 因此 1 2 3 1 2 3 1 2 3 1 1 1 2 1 1 1 2 1 1 1 2
  • Sencha Touch MVC 最佳实践

    我试图将我的注意力集中在 Sencha Touch 的 MVC 框架上 但我发现了几种不同的方法 其中一处 发现here http vimeo com 17705448 SenchaCon 2010 上提出了一种构建 Sencha Touc
  • 关闭:使用未解析的标识符“self”

    我正在解析 Swift 语言指南教程 来自 Apple iOS 开发库 并为每一章创建一个单独的 swift 文件 在每个文件中 我创建多个函数 在其中隔离它们提供的代码片段 一切正常 直到测试闭包的强引用循环 由于某种原因 如果在函数内部
  • RampUsersPerSec 函数的真正作用是什么?

    我发现加特林文档对特定功能有点不清楚 rampUsersPerSec 在给定持续时间内每秒注入随机数量的用户 rate1 至 rate2 期间 dur 单位 从起始速率1注入用户 目标速率2 在给定持续时间内以每秒用户数定义 例如 在 10
  • TestFlight 处理状态

    上传新版本的应用程序后试飞 应用程序有状态加工几分钟后 程序集从列表中消失 之前没有这个问题 请问是什么原因呢 检查邮箱 您将收到来自 Apple 的邮件 如果您仍然没有收到任何邮件 请检查 plist 和权限 确保您已在 plist 中包
  • 如何在JPQL中应用正则表达式?

    我使用 JPA Hibernate 作为持久层 我需要添加一个基于正则表达式的 WHERE 子句 这样的一些模式是 SELECT FROM TableName where REGEXP LIKE ColumnName Pattern 我从结
  • SQL Server Express连接字符串

    sql server连接字符串和express版本有区别吗 By default though I don t recommend it1 Sql Express is installed as a named instance http
  • 内置可调用作为 Django Field 的默认参数

    我有一个 JSONField 需要对其应用默认字典 根据文档 我避免将可变字典传递到默认字段 这是通过将复制方法传递给默认参数来完成的 如下所示 default dict some key some value class MyModel
  • 使用 .runsettings 从代码覆盖率中排除程序集

    当为包含多个项目的解决方案运行代码覆盖率时 我注意到代码覆盖率还包括我的测试程序集 我发现一篇文章建议使用以下 runsettings 模板
  • 是否可以发出从泛型类型派生的类型,同时将其自身指定为泛型类型参数?

    想象一下以下完全合法的类型层次结构 class A
  • with 语句在 Python 2.4 中产生“无效语法”错误

    我有一些用 Python 2 7 编写的代码 如下所示 if os path exists path to my file somefile txt with open path to my file somefile txt r as r
  • 在 React Native 中更改应用程序背景颜色

    我正在尝试将 React Native 应用程序中的背景颜色从灰色更改为白色 我在用着反应导航做一个TabNavigator在我渲染它之后 我试着把这个TabNavigator在视图和集合中backgroundColor但所有屏幕都变白了
  • GitHub 不断抛出“无法提交子模块”错误,我不明白这是为什么。有任何想法吗?

    我正在尝试将我的项目放在 GitHub 上 但我一直遇到问题 我在 GitHub 网站 上创建了一个存储库 下载了客户端 克隆 基本上拖放 GitHub 给我的链接 它 将我的项目移动到克隆目录中 但我仍然没有看到文件 所以我检查了 更改
  • Pickling 经过训练的 NLTK 模型

    所以我目前正在一组手术数据上训练隐马尔可夫模型 如下所示 nltkTrainer nltk tag hmm HiddenMarkovModelTrainer range 15 range 90 model nltkTrainer train
  • 如何使用 Kubectl 隐藏列

    我使用 tmuxinator 生成一个 tmux 窗口 用于监视一些 kubectl 命令的输出 例如 watch n 5 kubectl get pods rc svc pv pvc 但有时 Kubectl 的输出变得太宽 即滚动更新后的
  • NumPy 布尔数组警告?

    我有一些 numpy 数组 可以说a b and c 并创建了一个mask适用于所有这些 我试图这样掩盖它们 a a mask where mask is a bool大批 值得注意的是 我已经验证过 len a len b len c l
  • 使用 r 包 xlsx 删除 Excel 中的工作表

    正如标题所述 我想使用 r 和 xlsx 包删除 excel 中的第二个工作表 然而 运行代码后 什么也没有发生 以下是我用来删除工作表的示例代码 path C ECOS Code Test data xlsx sheets getShee
  • 如何生成可重复的随机数序列?

    我想要一个可以生成伪随机值序列的函数 但该序列每次运行都是可重复的 我想要的数据必须在给定范围内相当好的随机分布 它不一定是完美的 我想编写一些代码 根据随机数据对其运行性能测试 我希望每台机器上的每次测试运行的数据都相同 但由于存储原因
  • 将内容文件存入带换行符的 unix 变量中

    我有一个文本文件 test txt 其中包含以下内容 text1 text2 我想将文件的内容分配给 UNIX 变量 但是当我这样做时 testvar cat test txt echo testvar 结果是 text1 text2 代替
  • 使用 Graph Api 针对租户进行角色计数

    有没有办法找到每个role存在反对tenant and number of users已分配给每个role using GraphServiceClient or GraphConnection班级 我正在使用 C 目录角色 查找租户的所有