You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Microsoft Graph API按issuerAssignedId搜索用户含冒号时出现异常问题咨询

关于Microsoft Graph API通过issuerAssignedId含冒号字符串搜索用户的异常问题

问题场景与现象

使用Microsoft Graph API通过issuerAssignedId筛选用户时,当待匹配字符串包含冒号(:),会返回Request_BadRequest错误;不含冒号的查询则可正常执行。

正常工作的查询示例

在Graph Explorer中执行以下请求可正常返回结果:

https://graph.microsoft.com/v1.0/users?$select=identities&$filter=identities/any(id:id/issuer eq 'someTenantId' and id/issuerAssignedId eq 'someIssuerAssignedId')

触发异常的查询示例

当issuerAssignedId的匹配值中加入冒号后,请求变为:

https://graph.microsoft.com/v1.0/users?$select=identities&$filter=identities/any(id:id/issuer eq 'someTenantId' and id/issuerAssignedId eq 'someIssuerAssignedId:')

返回错误响应:

{
    "error": {
        "code": "Request_BadRequest",
        "message": "Unsupported property or property value or combination of property and operation occured",
        "innerError": {
            "date": "xxxxxx",
            "request-id": "xxxxxx",
            "client-request-id": "xxxxxx"
        }
    }
}

关键细节排查

  • 仅issuerAssignedId字段存在该问题,issuer字段匹配含冒号的字符串时完全正常。
  • 在C#代码调用场景下,需同时包含冒号和@符号才会触发该异常,单独的冒号可能不会触发(取决于SDK或手动拼接URL的方式)。

问题定性

这属于Graph API的未处理特殊字符的Bug,并非设计特性或字段固有机制。后台对issuerAssignedId字段的解析逻辑存在缺陷,无法正确处理包含冒号(尤其结合@符号)的字符串,导致误判为非法格式。

解决办法

除了避免在搜索值中使用冒号外,可采用以下方案:

  • URL编码特殊字符:将冒号:转换为URL编码值%3A后再传入查询,示例请求:
    https://graph.microsoft.com/v1.0/users?$select=identities&$filter=identities/any(id:id/issuer eq 'someTenantId' and id/issuerAssignedId eq 'someIssuerAssignedId%3A')
    
  • 使用官方SDK:如果使用Microsoft Graph SDK for .NET,直接传入原始字符串即可,SDK会自动处理特殊字符的编码工作,避免手动拼接URL时的编码遗漏。
  • 尝试$search替代:若URL编码仍无法解决,可尝试使用$search查询(需确保Azure AD目录已启用搜索功能),不过$search对identities字段的支持有限,需提前测试验证可用性。

内容的提问来源于stack exchange,提问作者Ilia Ershov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 22:08:11