Azure active directory Microsoft Graph-按X500代理地址筛选用户

Azure active directory Microsoft Graph-按X500代理地址筛选用户,azure-active-directory,microsoft-graph-api,Azure Active Directory,Microsoft Graph Api,是否可以通过X500代理地址筛选用户 使用以下按SMTP地址筛选的查询,我可以返回我的所有代理地址: /v1.0/users/?$filter=proxyAddresses/any(x:x eq 'smtp:me@here.com')&$select=proxyAddresses 但是,如果我获取上述查询中返回的X500地址之一,并尝试按该地址进行筛选: /v1.0/users/?$filter=proxyAddresses/any(x:x eq 'x500:/o=ExchangeLa

是否可以通过X500代理地址筛选用户

使用以下按SMTP地址筛选的查询,我可以返回我的所有代理地址:

/v1.0/users/?$filter=proxyAddresses/any(x:x eq 'smtp:me@here.com')&$select=proxyAddresses
但是,如果我获取上述查询中返回的X500地址之一,并尝试按该地址进行筛选:

/v1.0/users/?$filter=proxyAddresses/any(x:x eq 'x500:/o=ExchangeLabs/ou=Exchange Administrative Group (blahblah)/cn=Recipients/cn=trimmed')&$select=proxyAddresses
然后我得到一个400:

{ 错误:{ 代码:请求\u未支持的查询, 消息:为资源“用户”的属性“proxyAddresses”指定的查询筛选子句不受支持或无效。, 内部错误:{ 请求id:adcdefg, 日期:2019-01-01T01:01:01 } } } 我尝试了URL编码地址,也尝试了使用和不使用X500:scheme


支持按X500地址过滤吗?

我可以使用X500地址作为过滤器,而无需从服务器对地址进行任何修改。以下查询都返回正确的用户记录

https://graph.microsoft.com/v1.0/users/?$filter=proxyAddresses/any(x:x eq 'x500:/o=Company Exchange/ou=First Administrative Group/cn=Recipients/cn=UIDHere')&$select=proxyAddresses


我能够使用X500地址作为过滤器,而无需从服务器对地址进行任何修改。以下查询都返回正确的用户记录

https://graph.microsoft.com/v1.0/users/?$filter=proxyAddresses/any(x:x eq 'x500:/o=Company Exchange/ou=First Administrative Group/cn=Recipients/cn=UIDHere')&$select=proxyAddresses


就像丽莎-这不是关于括号。我有任何关于proxyAddresses的lambda查询,使用X500地址,其中包含括号,在Graph Explorer中运行良好

我怀疑问题实际上是搜索字符串的大小。如果搜索字符串的大小大于120个字符,我将重新设置错误

我正在跟进工程团队

同时,Paul,作为一种解决方法,并作为我缺乏X500知识的借口,有没有一种方法可以使用最短的X500字符串进行查询


希望这有帮助,就像Lisa一样-这不是关于括号。我有任何关于proxyAddresses的lambda查询,使用X500地址,其中包含括号,在Graph Explorer中运行良好

我怀疑问题实际上是搜索字符串的大小。如果搜索字符串的大小大于120个字符,我将重新设置错误

我正在跟进工程团队

同时,Paul,作为一种解决方法,并作为我缺乏X500知识的借口,有没有一种方法可以使用最短的X500字符串进行查询


希望这能有所帮助,

正如丹·克肖所回答的那样-这似乎是一个硬编码的限制,在被过滤的电子邮件地址中只能包含120个字符

一个简单的解决方法是将包含scheme-x500:或smtp:的电子邮件地址缩减为120个字符,并使用startswith进行搜索:

/v1.0/users/?$filter=proxyAddresses/any(x:startswith(x, 'x500:/o=ExchangeLabs/ou=Exchange Administrative Group (blahblah)/cn=Recipients/cn=trimmed'))&$select=proxyAddresses

这可能会返回多个匹配项,因此需要查看每个返回的用户,并查看他们的proxyAddresses集合,查看哪些与正在搜索的原始未修剪电子邮件地址相匹配。

正如Dan Kershaw所回答的那样-这似乎是一个硬编码限制,即筛选的电子邮件地址中有120个字符

一个简单的解决方法是将包含scheme-x500:或smtp:的电子邮件地址缩减为120个字符,并使用startswith进行搜索:

/v1.0/users/?$filter=proxyAddresses/any(x:startswith(x, 'x500:/o=ExchangeLabs/ou=Exchange Administrative Group (blahblah)/cn=Recipients/cn=trimmed'))&$select=proxyAddresses

这可能会返回多个匹配项,因此需要查看每个返回的用户,并查看他们的proxyAddresses集合,以查看哪些与正在搜索的原始未修剪电子邮件地址匹配。

我可以确认,截至今天,这仍然是一个问题

我实际上使用的是AzureAD PowerShell cmdlet,它利用了Graph API

直到找到这个线程,我才明白为什么我的查询失败了,所以谢谢你

我在PowerShell中收到了基本相同的错误消息: 为资源“组”的属性“proxyAddresses”指定的查询筛选器子句不受支持或无效

当我使用前120个字符的子字符串并运行startsWith时,它运行得很好


遗憾的是,这个问题仍然没有得到解决。

我可以确认,到今天为止,这仍然是一个问题

我实际上使用的是AzureAD PowerShell cmdlet,它利用了Graph API

直到找到这个线程,我才明白为什么我的查询失败了,所以谢谢你

我在PowerShell中收到了基本相同的错误消息: 为资源“组”的属性“proxyAddresses”指定的查询筛选器子句不受支持或无效

当我使用前120个字符的子字符串并运行startsWith时,它运行得很好


很遗憾,这个问题仍然没有得到解决。

谢谢-很高兴知道它得到了支持。我仍然无法让它在这里工作,我很难看出您的查询和我的查询之间的任何差异。一个是MSFT支持,我猜谢谢-很高兴知道它得到了支持。我仍然无法让它在这里工作,我很难看出您的查询和我的查询之间的任何差异。一个是MSFT支持,我想谢谢马克。支持电话已通过MSFT开通,我将在收到电话后提供正式答复one@MarcLaFleur另外,有趣的是,LisaJ下面的第二个查询使用了括号,似乎工作正常。我可以在add中看到我的组织
ress是exchangelabs,不是100%确定,但我猜这是用于云主机邮箱的,所以可能问题只在于这些邮箱?谢谢马克。支持电话已通过MSFT开通,我将在收到电话后提供正式答复one@MarcLaFleur另外,有趣的是,LisaJ下面的第二个查询使用了括号,似乎工作正常。我可以在地址中看到我的组织是exchangelabs,不是100%确定,但我猜这是用于云主机邮箱的,所以可能问题只在于这些邮箱?谢谢Dan。我还缺乏X500知识,所以不确定是否可以缩短该字符串。我的解决方案是一个Outlook集成—我使用客户端Outlook API提取X500地址,因此我可以任由Outlook决定所提供的地址。有可能使用Outlook API将X500解析为smtp地址,但这增加了相当多的复杂性,例如脱机模式下的工作方式不同,因此我更愿意将收到的信息交给GraphI。我将尝试在收到工程团队的回复后作出响应,并查看是否有可能进行修复。你只拿回一个X500吗?如果您从Outlook获得了多个,您能选择最短的吗?好的,谢谢Dan。我只收到了一个地址不幸的是,调查这件事的银行,丹。我找到了一个简单的解决方法-请参阅公认的答案。据我所知,Azure AD对代理地址的限制为133个字符,因此如果过滤器参数的限制可以相应增加,那就太好了。谢谢Dan。我还缺乏X500知识,所以不确定是否可以缩短该字符串。我的解决方案是一个Outlook集成—我使用客户端Outlook API提取X500地址,因此我可以任由Outlook决定所提供的地址。有可能使用Outlook API将X500解析为smtp地址,但这增加了相当多的复杂性,例如脱机模式下的工作方式不同,因此我更愿意将收到的信息交给GraphI。我将尝试在收到工程团队的回复后作出响应,并查看是否有可能进行修复。你只拿回一个X500吗?如果您从Outlook获得了多个,您能选择最短的吗?好的,谢谢Dan。我只收到了一个地址不幸的是,调查这件事的银行,丹。我找到了一个简单的解决方法-请参阅公认的答案。据我所知,Azure AD对proxyAddresses的限制为133个字符,因此,如果过滤器参数的限制可以相应地增加,那就太好了。有趣的是,我刚刚回到这个线程,建议使用startswith子句时使用完全相同的内容。保罗,谢谢你,谢谢你与社区分享!我仍然会为这个问题提交一个bug。Cheers@DanKershaw MSFT-很高兴会有一个bug出现在它上面,因为这类问题在测试中很容易被忽略,然后只是偶尔出现在prod环境中有趣的是-我刚刚回到这个线程,建议使用startswith子句时使用完全相同的东西。保罗,谢谢你,谢谢你与社区分享!我仍然会为这个问题提交一个bug。Cheers@DanKershaw MSFT-很高兴会有一个bug出现在它上面,因为这是一个在测试中很容易被忽略的问题,然后只会偶尔出现在prod环境中