【问题标题】:AAD B2C: Search Users by PrincipalNameAAD B2C:按 PrincipalName 搜索用户
【发布时间】:2021-01-21 15:33:40
【问题描述】:

我已关注documentation,通过登录名查找注册用户。

示例显示以下代码以返回登录名j.smith@yahoo.com 的任何用户:

var users = await graphClient.Users
    .Request()
    .Filter("identities/any(c:c/issuerAssignedId eq 'j.smith@yahoo.com' and c/issuer eq 'contoso.onmicrosoft.com')")
    .GetAsync();

现在我正在尝试实现一个搜索,它应该搜索用户而不输入完整的signInName。由于过滤器似乎是 OData,我尝试使用 contains 方法对其进行增强:

var users = await graphClient.Users
    .Request()
    .Filter($"identities/any(c:contains(c/issuerAssignedId,'j.smith') and c/issuer eq 'contoso.onmicrosoft.com') ")
    .Top(5)
    .GetAsync();

现在我在运行这个新查询时收到以下错误:

Status Code: BadRequest
Microsoft.Graph.ServiceException: Code: Request_BadRequest
Message: An unknown function with name 'contains' was found. This may also be a key lookup on a navigation property, which is not allowed.

是我在某处打错字还是contains 不允许?我不认为issuerAssignedId 是查找或导航属性。由于我正在使用 Azure AD B2C,$search 函数也无法根据相同的文档页面工作,所以我现在卡住了。

在 Azure AD B2C 中搜索用户的方式是什么?

编辑

我发现另外两篇 StackOverflow 文章讨论了这个问题,但它们已经很老了。在one of them 中,一位微软员工指出可以使用startswith 运算符。

我试过这样实现它,但它也会抛出一个错误。

.Filter($"identities/any(a:startswith(a/issuerAssignedId,'{username}') and a/issuer eq '{issuer}') ")
Status Code: BadRequest
Microsoft.Graph.ServiceException: Code: Request_BadRequest
Message: Unsupported property or property value or combination of property and operation occured

更多来源

【问题讨论】:

    标签: .net azure azure-active-directory microsoft-graph-api microsoft-graph-sdks


    【解决方案1】:

    注意contains 运算符当前为not supported on any MS Graph queries,有一个使用startsWith 的解决方法。

    用于查找identities 属性的Microsoft Graph 实现仅限于为 issuerAssignedIdissuer 提供精确值。

    我实施的解决方法是将issuerAssignedId 保留在附加扩展属性中。如果您使用自定义策略,这相对容易实现。但是,如果您使用用户流,则容易出错,因为没有直接的方法将此值记录为附加属性。基本上,您必须不断地在 MS Graph 中查询 (delta at best!) users 并根据 issuerAssignedId 更新自定义属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-10
      • 2021-03-02
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      相关资源
      最近更新 更多