Azure active directory 使用Graph API访问Exchange 2016内部部署邮箱(混合设置)

Azure active directory 使用Graph API访问Exchange 2016内部部署邮箱(混合设置),azure-active-directory,microsoft-graph-api,exchange-server-2016,azure-hybrid-connections,microsoft-graph-mail,Azure Active Directory,Microsoft Graph Api,Exchange Server 2016,Azure Hybrid Connections,Microsoft Graph Mail,我在prem exchange server上有一个邮箱(处于混合模式)abc@onprem.com我正试图通过graph api(/messages)访问此文件。如果我在graph explorer中执行此操作,这将非常有效,但在通过实现执行此操作时失败 Azure应用程序注册门户中提供了所需的应用程序权限。 实现使用授予类型作为带有证书的客户端凭据,这非常适合云用户。 API的响应 IIS日志 For调用来自图形浏览器 2019-02-28 15:02:31 172.31.10.98GET/

我在prem exchange server上有一个邮箱(处于混合模式)
abc@onprem.com
我正试图通过graph api(/messages)访问此文件。如果我在graph explorer中执行此操作,这将非常有效,但在通过实现执行此操作时失败

Azure应用程序注册门户中提供了所需的应用程序权限。 实现使用授予类型作为带有证书的客户端凭据,这非常适合云用户。

API的响应 IIS日志
  • For调用来自图形浏览器
  • 2019-02-28 15:02:31 172.31.10.98GET/api/V2.0/Users('abc@onprem.com')/Messages/$count&CorrelationID=&cafeReqId=bc8e8aef-de46-4c72-bcf4-b4f567bc45dd;443 S-1-5-21-1392771109-4043059535-3934338706-114720.190.145.177Mozilla/5.0+(Macintosh;+Intel+Mac+OS+X+10_14_3)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/71.0.3578.80+Safari/537.36-200 0 287

  • 来自已实现应用程序的呼叫
  • 2019-02-28 15:00:05 172.31.10.98GET/api/V2.0/Users('abc@onprem.com')/Messages/$count&CorrelationID=&cafeReqId=c504b658-b9df-43b5-9dbb-8e83050c3d2f;443-20.190.128.103--4010 102

  • 此身份验证失败的原因是什么,可能是因为该令牌是由azure AD提供的,而azure AD是 根据onprem认证
  • 更新 添加了更多的日志标题,发现下面是错误

    2019-03-04 04:05:13 172.31.10.98 GET/api/V2.0/Users('abc@onprem.com')/Messages&CorrelationID=&cafeReqId=2823c302-3c84-4847-b586-accced4b6dd5;443-20.190.145.177 PostmanRuntime/7.6.0-4010 332承载者+eyJ0诸如此类…..诸如此类…..hSd mail.onprem.com----Bearer+client_id=“0000000 2-0000-0ff1-ce00-0000000000000”、+令牌类型=“应用程序断言用户v1+服务断言应用程序v1”、+授权uri=”https://login.windows.net/common/oauth2/authorize“,+error=“无效的\u令牌”2000001;reason=“此+令牌+配置文件+'V1S2SAppOnly'+不适用于+当前+协议。”;错误\u category=“无效\u令牌”


    我们正在exchange服务器上使用自签名证书,这会导致此问题吗?如果您想知道graph explorer中的一切是如何工作的,那么问题实际上在其他地方-Exchange似乎不支持客户端凭据流。但是,您可以通过以下PowerShell强制执行(请确保在应用后重新启动IIS):

    $apps=获取PartnerApplication
    #Microsoft Graph是数组中的第二项,如果您不确定,请先调用$apps列出这些项
    $apps[1]|设置PartnerApplication-AppOnlyPermissions$apps[1]。ActAsPermissions
    

    完整的解释可以在这里找到:

    我记得做了上面提到的所有事情[链接]。但我上次执行Set PartnerApplication失败,错误如下。如何克服它??找不到与参数名称'AppOnlyPermissions'匹配的参数。+CategoryInfo:InvalidArgument:(:)[Set PartnerApplication],ParameterBindingException+FullyQualifiedErrorId:NamedParameterNotFound,Set PartnerApplication+PSComputerName:XXX您有什么版本的Exchange?我在EX2016I上做了这个,我也在exchange版本16上做了尝试。版本:标准AdminDisplayVersion:版本15.1(版本1591.10),这意味着您在Exchange Server 2016 CU11上。我必须检查客户在生产中运行的是什么,但我认为是类似的。无论哪种方式,都有一种方法可以将其直接放入数据库。请给我几天时间来解决这个问题。我已经检查了我的环境-它是Exunge 2016 CU12-1713.5,您可以尝试安装CU12并试用吗?
    { 'error': {
        'innerError': {
            'date': '2019-02-28T14:17:45', 
            'request-id': '6a85f8c3-4e13-4cf0-84b2-ddc934241afd'
        },
        'message': '', 
        'code': 'UnknownError'
        }}