我无法在WebJob(基本上是控制台应用程序)内部访问Microsoft Graph。尝试从AD提取用户时,出现“权限不足,无法完成操作”的错误。
我正在建立一个计划的网络作业,该作业应该不时地同步用户详细信息。为此,我要连接到图形,以获取用户。 如果我代表用户使用真实用户令牌进行身份验证,则相同的代码也可以使用,但是它要求用户打开Web应用程序并单击按钮。
我有要连接的应用程序ID和密码,但是它是过去为Web应用程序本身生成的。它是否应该在我的方案中起作用,还是我应该生成一个单独的ID /秘密并以其他方式对其进行配置。
以下是一些代码:
var pages = activeDirectoryClient.Users.Where(adItem => adItem.Mail == o.Email).ExecuteAsync().Result;
var activeDirectoryClient = new ActiveDirectoryClient(serviceRoot, async () => await GetTokenAsync(authContext, azureAdParameters.UserObjectId, azureAdParameters.HostUrl));
ActiveDirectoryClient用于获取用户数据,但它来自 Microsoft.Azure.ActiveDirectory.GraphClient 是否需要Microsoft Graph API权限或Azure AD Graph API权限?
谢谢
答案 0 :(得分:0)
您的旧Web应用程序注册似乎缺少所需的应用程序权限。所以我的建议是:
希望有帮助。
答案 1 :(得分:0)
WebJob不是公共客户端-它是机密客户端。当需要获取令牌时,无需用户进行身份验证,并且知道如何保护机密(这是机密客户端的定义)。它需要自己进行身份验证。您需要为其授予适当的 Application 权限(User.Read.All是已授权的权限-它将不起作用),如果管理员需要,请征得他们的同意并使用使用ClientCredentials(应用程序ID和对称密钥,或者最好是X509证书)的AcquireToken方法。