Azure 活动目录图 api 查询用户

Azure active directory graph api query user

我正在开发一个需要查询 Azure AD 的应用程序。该查询在某些字段上有效,但在某些字段(例如手机号码)上不起作用。

使用名称过滤时查询正常

var searchResults = await userCollection.Where(user =>
                (user.UserPrincipalName.StartsWith(searchString) ||
                user.DisplayName.StartsWith(searchString) ||
                user.GivenName.StartsWith(searchString) ||
                user.Surname.StartsWith(searchString) ||
                user.Mail.StartsWith(searchString)) && user.AccountEnabled == true).ExecuteAsync();

但对于手机号码和其他字段会抛出异常

var searchResults = await userCollection
                .Where(x => x.Mobile == "+63 922 3965 021").ExecuteAsync();

这里是例外 "Unsupported or invalid query filter clause specified for property 'mobile' of resource 'User'."

您可以通过这种方式查询某些属性。 Linq 查询针对 Azure AD Graph API 生成一个 Filter 表达式。但是其他的,比如手机号,就不行了。

对于用户对象,可以看到可过滤的属性in the reference

您可以过滤的那些被标记为这样(例如 Surname 属性:"GET ($filter)")。