【问题标题】:Find user by email address using Active directory client library使用 Active Directory 客户端库按电子邮件地址查找用户
【发布时间】:2018-05-29 06:56:20
【问题描述】:

我找到了一个通过 objectId 和 principalname 获取用户的链接。

参考: Announcing Azure AD Graph API Client Library 2.0

我有一个用例,例如,在 AD 中创建用户之前,我想检查电子邮件地址是否已经存在。

当用户已经在那里时,我得到了这个异常:

{"odata.error":{"code":"Request_BadRequest","message":{"lang":"en","value":"Another object with the same value for property signInNames already exists."},"date":"2018-05-29T06:54:41","requestId":"9ac7e678-7426-4dfd-9aa5-89c24038b9e0","values":[{"item":"PropertyName","value":"signInNames"},{"item":"PropertyErrorCode","value":"ObjectConflict"}]}}

那么,有没有什么简单的方法可以在创建用户之前检查邮箱地址是否存在?

尝试使用 Martin 发布的答案时出现以下异常

【问题讨论】:

    标签: azure azure-active-directory azure-ad-b2c azure-ad-graph-api


    【解决方案1】:

    我已尝试使用下面的查询,它工作正常。

    Client.Users.Where(u => u.SignInNames.Any(x => x.Value == "YourEmail@yourdomain.com")).ExecuteSingleAsync();
    

    感谢@Martin Brandl

    【讨论】:

      【解决方案2】:

      您可以执行查询来检查具有该登录名的用户是否存在:

      Client.Users.Where(u => u.SignInNames.Any(x => x.Type == "emailAddress" && x.Value == YourEmail@yourdomain.com)).ExecuteSingleAsync()
      

      如果您使用 AAD B2C,则必须省略 SignInNames 的类型检查。

      【讨论】:

      • 我已经尝试过您的建议,但最终出现错误。 ""目前不支持过滤属性 'type'。"
      • 啊,可能是因为它是aad b2c?
      • 我回答了你的新问题。请考虑使用绿色复选标记接受此答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      相关资源
      最近更新 更多