1 回答

TA貢獻1853條經驗 獲得超18個贊
廣告圖客戶端調用廣告圖 api,將用戶分配到您的應用程序的 api 是
https://graph.windows.net/{tenant}/servicePrincipals/{servicePrincipalId}6f/appRoleAssignedTo
所以代碼應該是
aadClient.ServicePrincipals.GetByObjectId("").AppRoleAssignedTo
您可以找到服務 servicePrincipalId,如下所示。它是您的企業應用程序的 ObjectId。
Directory.Read.All
需要許可。點擊應用注冊->找到您的應用程序(與提供clientId的應用程序相同)->API權限
請記住單擊Grant admin consent
按鈕,因為此權限需要管理員同意。
更新: 我可以成功地將用戶分配給應用程序,這是測試代碼。
using System;
using System.Threading.Tasks;
using Microsoft.Azure.ActiveDirectory.GraphClient;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
namespace ConsoleApp13
? ? {
? ? ? ? class Program
? ? ? ? {
? ? ? ? ? ? static void Main(string[] args)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Uri servicePointUri = new Uri("https://graph.windows.net");
? ? ? ? ? ? ? ? Uri serviceRoot = new Uri(servicePointUri, "{tenant}");??
? ? ? ? ? ? ? ? var aadClient = new ActiveDirectoryClient(
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? serviceRoot,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?getToken);
? ? ? ? ? ? ? ? var a = aadClient.ServicePrincipals.GetByObjectId("{objectId}").AppRoleAssignedTo.ExecuteAsync().Result;
? ? ? ? ? ? ? ? Console.WriteLine(a.CurrentPage.Count);
? ? ? ? ? ? }
? ? ? ? ? ? public static async Task<string> getToken()
? ? ? ? ? ? {
? ? ? ? ? ? ? ? var context = new AuthenticationContext($"https://login.microsoftonline.com/{tenant}", false);
? ? ? ? ? ? ? ? return context.AcquireTokenAsync("https://graph.windows.net", new ClientCredential("{client_id}", "{client_secret}")).Result.AccessToken;
? ? ? ? ? ? }
? ? ? ? }
? ? }
確保您已授予Directory.Read.All
您的應用程序權限。您可以通過解碼令牌在訪問令牌中檢查它。
- 1 回答
- 0 關注
- 120 瀏覽
添加回答
舉報