首页 > 解决方案 > 如何使用 Azure Active Directory Graph Client 在 Azure B2C 中查找具有相同用户名\电子邮件地址的所有用户?

问题描述

B2C Azure AD 的用户具有相同的电子邮件地址,例如“someuser@gmail.com”。

User name                User type       Source                
someuser@gmail.com       Member          Azure Active Directory
someuser@gmail.com       Member          Microsoft Account
someuser@gmail.com       Member          Facebook

请注意,不同的是Source列。电子邮件是一样的。

现在,当我进行这样的搜索时:

GET https://graph.windows.net/myb2ctenant.onmicrosoft.com/users?api-version=1.6&$filter=signInNames/any(x:x/value%20eq%20%27someuser@gmail.com%27)

我只得到一行:源 = Azure Active Directory 的一行,但没有来自外部身份提供程序 (IDP) 的其他 2 行。

如何一次性检索与此用户名\电子邮件地址匹配的 3 行?

一旦我得到这 3 个用户,我想删除它们。

####### 编辑 #######

从 Chris Padget的回答中,我可以得到拥有 Facebook 作为发行人的用户,如下所示:

Get-User $filter=userIdentities/any(x:x/issuer%20eq%20%27facebook.com%27)

标签: c#emailazure-active-directoryazure-ad-b2cdelete-row

解决方案


在摆弄了这个$filter选项之后,我让它像这样一次性工作:

Get-User $filter=signInNames/any(x:x/value%20eq%20%27someuser@gmail.com%27)%20or%20otherMails/any(y:y%20eq%20%27someuser@gmail.com%27)

对于外部身份提供者,我们需要检查otherMails属性。

#######

注意:必须对电子邮件地址进行编码。我刚刚$filter使用带有电子邮件地址的 C# 代码对此进行了测试someuser+1@gmail.com,但它没有检索用户。那是因为+符号。

我们可以使用HttpUtility.UrlEncode(email).

更多信息在这里


推荐阅读