求助:如何使用Microsoft.Azure.ActiveDirectory.GraphClient SDK编程邀请Azure AD B2B用户
使用Microsoft.Azure.ActiveDirectory.GraphClient实现Azure B2B用户邀请
嘿,我之前刚好折腾过用这个SDK来处理Azure B2B的用户邀请,完全可以实现!下面是具体的步骤和代码示例,帮你快速搞定:
1. 准备依赖包
首先确保你安装了必要的NuGet包:
Microsoft.Azure.ActiveDirectory.GraphClient:核心的AD Graph SDKMicrosoft.IdentityModel.Clients.ActiveDirectory:用于获取访问令牌
可以通过NuGet包管理器或者命令行安装:
Install-Package Microsoft.Azure.ActiveDirectory.GraphClient Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
2. 获取访问令牌
要调用AD Graph API,你需要先获取有效的访问令牌。这里以服务主体认证为例(也可以用用户凭据):
string tenantId = "你的租户ID"; string clientId = "你的服务主体ID"; string clientSecret = "你的服务主体密钥"; string resource = "https://graph.windows.net"; var authContext = new AuthenticationContext($"https://login.microsoftonline.com/{tenantId}"); var credential = new ClientCredential(clientId, clientSecret); var authResult = await authContext.AcquireTokenAsync(resource, credential); string accessToken = authResult.AccessToken;
3. 创建Graph客户端并发送邀请
接下来实例化GraphServiceClient,然后构建Invitation对象并发送:
// 初始化Graph客户端 var graphClient = new GraphServiceClient( new DelegateAuthenticationProvider((requestMessage) => { requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); return Task.FromResult(0); }) ); // 构建邀请对象 var invitation = new Invitation { InvitedUserEmailAddress = "external.user@example.com", // 外部用户邮箱 InvitedUserDisplayName = "External User", // 外部用户显示名 SendInvitationMessage = true, // 是否自动发送邀请邮件 InviteRedirectUrl = "https://your-app-url.com" // 用户接受邀请后跳转的URL }; // 发送邀请 var createdInvitation = await graphClient.Invitations.AddInvitationAsync(invitation);
关键注意事项
- 权限配置:你的服务主体需要被授予
Directory.ReadWrite.All或者User.Invite.All的应用权限(必须是应用权限,委托权限可能无法生效),记得在Azure AD门户中给服务主体分配这些权限并授予管理员同意。 - AD Graph弃用提醒:虽然这个SDK可以实现需求,但微软已经宣布Azure AD Graph将于2023年6月30日停止服务,长期来看建议迁移到Microsoft Graph SDK,对应的B2B邀请API更完善且持续维护。
内容的提问来源于stack exchange,提问作者user1500960
相关产品推荐
相关产品推荐

