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 关注
- 91 浏览
添加回答
举报