如何通过Microsoft Graph API添加Office 365/Exchange Online用户并分配许可证
通过Microsoft Graph API在Office 365/Exchange Online中添加用户并分配许可证
可行性说明
完全可行。Exchange Online的用户本质是Azure Active Directory(Azure AD)中的用户,只要通过Microsoft Graph API创建Azure AD用户并分配包含Exchange Online组件的Office 365许可证,该用户会自动同步到Exchange Online,无需单独在Exchange中创建用户。
实现步骤
1. 准备工作:注册应用并配置权限
在Azure AD中注册一个应用程序,为其分配以下应用权限(后台编程场景需用应用权限,而非委派权限):
User.ReadWrite.All:用于创建和管理用户License.ReadWrite.All:用于分配许可证
分配权限后,获取应用的客户端ID、租户ID和客户端密钥,用于调用API时的身份验证。
2. 创建Azure AD用户(同步至Exchange Online)
调用POST /users接口创建用户,示例请求体如下:
{ "accountEnabled": true, "displayName": "John Doe", "mailNickname": "johndoe", "userPrincipalName": "john.doe@contoso.com", "passwordProfile": { "forceChangePasswordNextSignIn": true, "password": "P@ssw0rd123!" } }
accountEnabled必须设为true,否则无法分配许可证userPrincipalName需符合租户的域名格式- 密码需满足租户的密码策略
3. 获取可用的许可证SKU
调用GET /subscribedSkus接口,获取租户已订阅的许可证SKU信息。响应中每个SKU的skuId是分配许可证时需要的标识,例如包含Exchange Online的ENTERPRISEPREMIUM(E5)许可证。
4. 为用户分配许可证
调用POST /users/{userId}/assignLicense接口,将指定SKU分配给用户,示例请求体如下:
{ "addLicenses": [ { "skuId": "6fd2c87f-b296-42f0-b197-1e91e994b900" // 替换为你的许可证SKU ID } ], "removeLicenses": [] }
userId可以是用户的userPrincipalName或Azure AD对象ID- 分配成功后,用户会自动同步到Exchange Online,一般几分钟内完成
注意事项
- 确保应用已获得足够的权限,且权限已被管理员授予同意
- 许可证SKU必须是租户已订阅的可用SKU,否则分配会失败
- 创建用户时,
mailNickname不能与现有用户重复 - 若需用户直接使用Exchange Online功能,分配许可证后可能需要等待同步完成(通常不超过10分钟)
内容的提问来源于stack exchange,提问作者Manoj Dwivedi
相关产品推荐
相关产品推荐

