本段代码是一个功能强大的示例,可用于操作 Azure Active Directory (AAD) 以及通过 Azure Service Principal 授权来管理和控制 Azure 订阅资源。Azure 架构可以视为两个主要层级:AAD 和订阅。
以下代码展示了如何通过 Microsoft Graph API 获取 AAD 中的用户列表。为了实现这一点,您需要先注册一个 Azure AD 应用程序,并为其分配适当的权限(例如,读取目录数据权限)。
预先准备
- 注册一个 Azure AD 应用程序。
- 为该应用程序分配必要的权限,确保其具有足够的权限来访问 AAD 资源。
示例代码如下:
1 using Microsoft.IdentityModel.Clients.ActiveDirectory;
2 using Newtonsoft.Json;
3 using Newtonsoft.Json.Linq;
4 using System;
5 using System.Collections.Generic;
6 using System.Linq;
7 using System.Net;
8 using System.Net.Http;
9 using System.Threading.Tasks;
10
11 namespace AadGraphApi
12 {
13 class Program
14 {
15 static async Task Main(string[] args)
16 {
17 // 示例演示如何列出 AAD 中的所有用户
18 await ListAllUsersAsync();
19 Console.WriteLine("**--------done-------**");
20 Console.ReadLine();
21 }
22
23 private static async TaskGetAccessTokenAsync()
24 {
25 var tenant = "your-tenant-id";
26 var resource = "https://graph.microsoft.com";
27 var clientId = "your-client-id";
28 var clientSecret = "your-client-secret";
29 var authority = $"https://login.microsoftonline.com/{tenant}";
30 var authCOntext= new AuthenticationContext(authority);
31 var credentials = new ClientCredential(clientId, clientSecret);
32 var authResult = await authContext.AcquireTokenAsync(resource, credentials);
33 return authResult.AccessToken;
34 }
35
36 private static async Task ListAllUsersAsync()
37 {
38 var token = await GetAccessTokenAsync();
39 using (var client = new HttpClient())
40 {
41 client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
42 var apiUri = new Uri("https://graph.microsoft.com/v1.0/users");
43 var respOnse= await client.GetStringAsync(apiUri);
44 Console.WriteLine(response);
45 }
46 }
47 }
48}
此代码通过 OAuth 2.0 客户端凭据流获取访问令牌,并使用该令牌调用 Microsoft Graph API 来获取 AAD 中的用户列表。您可以根据需要扩展此代码以执行其他操作,如删除用户、检查用户是否存在或管理应用角色分配。
Azure 提供了一系列的 Graph API,允许开发者通过 HTTP 请求对 AAD 和订阅资源进行编程控制。类似地,您也可以通过 Management API 对 Azure 订阅资源进行管理。