目前正在将一个较旧的公司内部站点部署到Azure AD,最后的障碍是用AAD替换LDAP集成(使用ActiveDirectoryClient类)。
下面的代码在将要替换旧站点的新站点中工作,但在旧站点中失败:
ActiveDirectoryClient adClient = General.GetADClient();
User currentUser = adClient.Users.Where(u => u.UserPrincipalName == Page.User.Identity.Name).ExecuteSingleAsync().Result as User;
…这会产生以下错误:
{"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."}}}
据我所知,这两个web应用程序有几乎相同的设置。AAD应用程序注册中的应用程序清单也类似相同。
所以我的问题是:有人知道我在这里可能错过了什么吗?
文章中的代码正在使用Azure AD Graph REST过滤Azure AD用户集合。要查询uses collection,如果您使用的是委托权限,我们可以将Users.ReadBasic.All
权限授予应用程序。
为了缩小这个问题,我们也可以使用Fiddler来跟踪请求,然后解析这里的令牌,看看是否有足够的特权。有关Azure AD图的权限和范围的更多详细信息,请参阅此处。
如果您仍然有问题,请在令牌中发布有效载荷数据