使用Graph API的Exchange 2016本地邮箱访问(混合设置)

时间:2019-02-28 18:35:29

标签: azure-active-directory microsoft-graph exchange-server-2016 azure-hybrid-connections microsoft-graph-mail

我在Prem Exchange服务器(处于混合模式)abc@onprem.com上有一个邮箱,并且我试图通过图形api(/ messages)访问此邮箱。如果我在图形资源管理器中执行此操作,则效果很好,但是当我通过实现执行时失败。

所需的应用程序权限在Azure应用程序注册门户中给出。 实施使用 grant_type作为带有证书的client_credentials ,这对于云用户完全有效。

API的响应

{ 'error': {
    'innerError': {
        'date': '2019-02-28T14:17:45', 
        'request-id': '6a85f8c3-4e13-4cf0-84b2-ddc934241afd'
    },
    'message': '', 
    'code': 'UnknownError'
    }}

IIS日志

  1. 通话来自图浏览器

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-1147 20.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 0 287

  1. 用于已实施应用的通话

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--401 0 0 102

  
      
  1. 此身份验证失败的原因是什么,可能是因为该令牌是由天蓝色的AD提供的,   通过onprem进行了身份验证?
  2.   

更新

添加了更多用于记录的标头,发现以下是错误。

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-401 0 0 332 Bearer + eyJ0等等等等.....等等...... hSd mail.onprem.com---Bearer + client_id =“ 00000002-0000- 0ff1-ce00-000000000000“,+ token_types =” app_asserted_user_v1 + service_asserted_app_v1“,+ authorization_uri =” https://login.windows.net/common/oauth2/authorize“,+ error =” invalid_token“ 2000001; reason =” This +令牌+配置文件+'V1S2SAppOnly'+不适用于+当前+协议。“; error_category =” invalid_token“

我们在交换服务器上使用了自签名证书,这会导致此问题吗?如果是这样的话,想知道图浏览器的所有功能如何工作。

1 个答案:

答案 0 :(得分:1)

问题实际上出在其他地方-Exchange似乎不支持client_credentials流。但是,您可以通过以下PowerShell强制执行此操作(确保在应用后重新启动IIS):

$apps = Get-PartnerApplication
# Microsoft Graph is 2nd item in the array, if you are unsure, list the items by calling $apps first
$apps[1] | Set-PartnerApplication -AppOnlyPermissions $apps[1].ActAsPermissions

完整的解释可以在这里找到:https://blog.thenetw.org/2019/05/13/using-client_credentials-with-microsoft-graph-in-hybrid-exchange-setup/