Microsoft Graph 是 Microsoft 365 中通往数据和智能的网关。 它提供统一的可编程模型,可用于访问 Microsoft 365、Windows 10 和企业移动性 + 安全性中的海量数据。 利用 Microsoft Graph 中的大量数据针对与数百万名用户交互的组织和客户构建应用。

Microsoft Graph 公开了 REST API,包含了Azure上的所有资源操作。关于它目前能操作的资源可以参考官方说明:https://docs.microsoft.com/en-us/graph/api/overview?view=graph-rest-1.0

注:在中国区Microsoft Graph的终结点(Endpoint): https://microsoftgraph.chinacloudapi.cn/v1.0

问题描述

使用Microsoft Graph API 如何批量创建用户,用户属性中需要含有非AAD默认的Parameter(如Store_code, Store_name等)

解决办法

根据Graph API的文档说明,可以使用以下几个API组合完成以上需求:

  • Create UserCreate a new user. The request body contains the user to create. At a minimum, you must specify the required properties for the user. You can optionally specify any other writable properties.

  • Create extensionPropertyCreate a new extensionProperty definition. You can use this operation to add a custom property value to the targeted object type defined in the extensionProperty, using standard creation and update requests to the target object.

  • Batch CreateJSON batching allows you to optimize your application by combining multiple requests into a single JSON object.

测试示例

1) 为当前AAD添加扩展属性

POST https://microsoftgraph.chinacloudapi.cn/v1.0/applications/<objectID>/extensionProperties 

Body Content:

{
"name": "store_code",
"dataType": "String",
"targetObjects": [
"User"
]
}

调用成功后,返回的Responce如下:

Response body:
{
"@odata.context": "https://microsoftgraph.chinacloudapi.cn/v1.0/$metadata#applications('31d886ad-b40b-4599-a708-3bf45948396b')/extensionProperties/$entity",
"id": "7d79ae82-6955-4e7f-b6a8-095c749a2cb8",
"deletedDateTime": null,
"appDisplayName": "test",
"dataType": "String",
"isSyncedFromOnPremises": false,
"name": "extension_c21xxxc9_store_code", "targetObjects": [ "User" ] }

2)调用创建User API

POST https://microsoftgraph.chinacloudapi.cn/v1.0/users 

Body Content
{
"accountEnabled": true,
"displayName": "test",
"mailNickname": "User",
"userPrincipalName": "test@MicrosoftInternal.partner.onmschina.cn",
"mobilePhone":"12345678909",
"surname":"MB",
"givenName":"1LTY2",
"jobTitle":"test",
"country":"china",
"postalCode":"178",
"department":"CN",
"officeLocation":"ccc","passwordProfile" : {
"forceChangePasswordNextSignIn": true,
"password": "xWwvJ]6NMw+bWH-d"
},
"extension_c21xxxc9_store_code":"11111",
"extension_c21xxxc9_store_name":"Test Store" }

3)批量创建用户

POST https://microsoftgraph.chinacloudapi.cn/v1.0/$batch

Body Content:

{
"requests": [
{
"id": "1",
"method": "POST",
"url": "/users",
"body": {
"accountEnabled": true,
"displayName": "test",
"mailNickname": "User",
"userPrincipalName": "test@MicrosoftInternal.partner.onmschina.cn",
"mobilePhone": "12345678909",
"surname": "MB",
"givenName": "1LTY2",
"jobTitle": "test",
"country": "china",
"postalCode": "178",
"department": "CN",
"officeLocation": "ccc",
"passwordProfile": {
"forceChangePasswordNextSignIn": true,
"password": "xWwvJ]6NMw+bWH-d"
},
"extension_c21xxxc9_store_code": "11111",
"extension_c21xxxc9_store_name": "Test Store"
},
"headers": {
"Content-Type": "application/json"
}
},
{
"id": "2",
"method": "POST",
"url": "/users",
"body": {
"accountEnabled": true,
"displayName": "test",
"mailNickname": "User 2",
"userPrincipalName": "test1@MicrosoftInternal.partner.onmschina.cn",
"mobilePhone": "12345678909",
"surname": "MB",
"givenName": "1LTY2",
"jobTitle": "test",
"country": "china",
"postalCode": "178",
"department": "CN",
"officeLocation": "ccc",
"passwordProfile": {
"forceChangePasswordNextSignIn": true,
"password": "xWwvJ]6NMw+bWH-d"
},
"extension_c21xxxc9_store_code": "22222",
"extension_c21xxxc9_store_name": "Test Store 2"
},
"headers": {
"Content-Type": "application/json"
}
}
]
}

参考资料

Microsoft Graph 概述:https://docs.microsoft.com/zh-cn/graph/overview?view=graph-rest-1.0

Create User:https://docs.microsoft.com/en-us/graph/api/user-post-users?view=graph-rest-1.0&tabs=http

Create extensionProperty:https://docs.microsoft.com/en-us/graph/api/application-post-extensionproperty?view=graph-rest-1.0&tabs=http

Combine multiple requests in one HTTP call using JSON batching: https://docs.microsoft.com/en-us/graph/json-batching?context=graph%2Fapi%2F1.0&view=graph-rest-1.0

【Azure Developer】使用Microsoft Graph API 如何批量创建用户,用户属性中需要包含自定义字段(如:Store_code,Store_name等)的更多相关文章

  1. AAD Service Principal获取azure user list (Microsoft Graph API)

    本段代码是个通用性很强的sample code,不仅能够操作AAD本身,也能通过Azure Service Principal的授权来访问和控制Azure的订阅资源.(Azure某种程度上能看成是两个 ...

  2. 【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法

    问题描述 在先前的一篇博文中,介绍了如何使用Microsoft Graph API来创建Azure AD用户(博文参考:[Azure Developer]使用Microsoft Graph API 如 ...

  3. Microsoft Graph API -----起题 Graph API

    最近因为工作需要,接触学习使用了Microsoft Graph API.在看完Microsoft的Graph官方文档之后,也做了一些简单的案例,在Stack Overflow上做过一些回答.整体来说, ...

  4. 【Azure Developer】Python 获取Micrisoft Graph API资源的Access Token, 并调用Microsoft Graph API servicePrincipals接口获取应用ID

    问题描述 在Azure开发中,我们时常面临获取Authorization问题,需要使用代码获取到Access Token后,在调用对应的API,如servicePrincipals接口. 如果是直接调 ...

  5. 【Azure Developer】使用Microsoft Graph API创建用户时候遇见“401 : Unauthorized”“403 : Forbidden”

    问题描述 编写Java代码调用Mircrosoft Graph API创建用户时,分别遇见了"401 : Unauthorized"和"403 : Forbidden&q ...

  6. Microsoft Dynamics CRM 2011 批量添加域用户 然后添加CRM用户

    一.先了解下 DSADD user命令详解 常见的批量创建用户的方法有四种: 一. 帐户模板的方式 二. CSVDE和LDIFDE 三. 脚本的方式 四. DSADD 但是很少有详细的资料使用DSAD ...

  7. 【转】dsadd user批量创建AD用户命令详解

    常见的批量创建用户的方法有四种: 一. 帐户模板的方式 二. CSVDE和LDIFDE 三. 脚本的方式 四. DSADD 但是很少有详细的资料使用DSADD的方式来批量创建帐户,那么我就把我近期使用 ...

  8. Azure DevOps Server: 使用Rest Api获取拉取请求Pull Request中的变更文件清单

    需求: Azure DevOps Server 的拉取请求模块,为开发团队提供了强大而且灵活的代码评审功能.拉取请求中变更文件清单,对质量管理人员,是一个宝贵的材料.质量保障人员可以从代码清单中分析不 ...

  9. AD中批量创建域用户

    EXCEL表中的各列说明情况: A列:姓 B列:名 C列:姓名 D列:账号 E列:密码 此表格另存为person .csv 的格式到AD的C盘目录下,用记事本打开如下图所示: 打开CMD,右键以管理员 ...

随机推荐

  1. 在Ubuntu上安装TensorFlow-GPU开发环境

    深度学习是一个比较复杂的体系,今天记录一下开发环境的搭建步骤. 全新安装Ubuntu 20.10,系统默认安装的是python3,查看python的版本: mango@ubuntu:~$ python ...

  2. Android Studio之圆形按钮设计

    •效果展示图 •实现方法 点击 app/src/main/res 找到 drawable 文件夹,右击->New->Drawable Resource File. 创建一个 $drawab ...

  3. SQL注入靶场实战-小白入门

    目录 SQL注入 数字型 1.测试有无测试点 2.order by 语句判断字段长,查出字段为3 3.猜出字段位(必须与内部字段数一致)(用union联合查询查看回显点为2,3) 4.猜数据库名,用户 ...

  4. SIP (Session Initiation Protocol) 协议

    Session Initiation Protocol 介绍 SIP是VoIP技术最常使用的协议,它是一种应用程序层协议,可与其他应用程序层协议配合使用,以控制Internet上的多媒体通信会话. V ...

  5. Redis系列-存储篇list主要操作命令

    Redis系列-存储篇list主要操作命令小结 在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素 ...

  6. 阅读作业2&CI/CD调研

    说明 项目 内容 这个作业属于哪个课程 2021春季软件工程 (罗杰 任健) 这个作业的要求在哪里 个人阅读作业#2 我在这个课程的目标是 初步获得软件工程师的能力 这个作业在哪个具体方面帮助我实现目 ...

  7. es的分布式架构原理能说一下么(es是如何实现分布式的啊)?

    在搜索这块,lucene是最流行的搜索库.几年前业内一般都问,你了解lucene吗?你知道倒排索引的原理吗?现在早已经out了,因为现在很多项目都是直接用基于lucene的分布式搜索引擎--elast ...

  8. 代码安全丨第二期:URL重定向(跳转)漏洞

    URL重定向: URL重定向(URLredirection)漏洞,又称跳转漏洞,指的是网络应用程序接受用户可控的输入作为到外部站点的链接,然后在重定向中使用该链接.该安全漏洞给网络钓鱼攻击提供了极大的 ...

  9. k8s cronjob

    k8s cronjob 只存在于v1beta1中 可以周期性 定时执行任务, 事例 [root@master01 ~]# kubectl apply -f mycronjob-busybox.yaml ...

  10. MSSQL数据库清理Log 压缩数据库日志文件

    dump transaction 数据库名 with no_log go dbcc shrinkdatabase(数据库名)