Azure active directory Azure客户端凭据无法在图形邮件API访问的混合设置中工作

Azure active directory Azure客户端凭据无法在图形邮件API访问的混合设置中工作,azure-active-directory,microsoft-graph-api,Azure Active Directory,Microsoft Graph Api,在混合设置中,如果客户端凭据授权类型用于获取令牌,并且该令牌用于获取prem用户消息(('onpremuser@onpremdomain.com“)/messages/)使用图形api时,由于提供未知错误而失败 在IIS日志上调试时,显示的错误是“此令牌配置文件'V1S2SAppOnly'不适用于当前协议。”error\u category=“invalid\u token” 然而,如果授权码授权或资源所有者密码凭证(ROPC)授权用于获取令牌,我们就能够使用graph API获取on prem

在混合设置中,如果客户端凭据授权类型用于获取令牌,并且该令牌用于获取prem用户消息(('onpremuser@onpremdomain.com“)/messages/)使用图形api时,由于提供未知错误而失败

在IIS日志上调试时,显示的错误是“此令牌配置文件'V1S2SAppOnly'不适用于当前协议。”error\u category=“invalid\u token”

然而,如果授权码授权或资源所有者密码凭证(ROPC)授权用于获取令牌,我们就能够使用graph API获取on prem用户的消息。 附上这两个网站的令牌截图。如何使用graph API(在混合设置中)使客户端凭据授予对prem用户消息访问有效

更新 更新我在Exchange server中编辑了rest的web.config,使其仅在配置文件中包含V1S2SAPPLY。之后,以前的错误消失,新的错误出现


持票人+客户_id=“0000000 2-0000-0ff1-ce00-000000000000”,+受信任的发行人=“0000000 1-0000-0000-c000-000000000000@ea6064aa-d6fc-48d3-abb8-1728e1f39e0b“,+令牌类型=“应用程序断言的用户”v1+服务程序断言的应用程序”v1,+错误=“无效的”令牌”2000008;原因=“该+令牌+应+具有+有效+权限+或+链接+帐户+关联+与+合作伙伴+应用程序+'00000003-0000-0000-c000-000000000000”;error\u category=“invalid\u grant”

我认为问题在于
aud
索赔,即令牌的受众

对于您已共享的第一个令牌

  • aud
    值为
    00000002-0000-0000-c000-000000000000
    。这是Azure AD Graph API的资源Id,而不是Microsoft Graph API。对于Microsoft Graph API,您应该使用
    https://graph.microsoft.com
    或Id
    00000003-0000-0000-c000-000000000000
  • 此令牌可能是您使用客户机凭据授权的令牌,因为没有任何用户声明
对于您已共享的第二个令牌

  • aud
    值为
    https://graph.microsoft.com
    哪个是正确的
  • 这个令牌是在用户名
    anoop
    的上下文中获得的,所以我猜这就是为您工作的令牌
    • 您想要的是:

      具有客户端凭据的应用程序
      =>
      图形API
      =>
      本地交换

      此方案不支持开箱即用,但您可以告诉本地exchange服务器接受这些令牌。看到这个答案了吗

      简而言之,您需要更改前端exchange服务器的身份验证配置,以从graph api接受客户端凭据。默认情况下,仅支持委派凭据,并且这些设置不会在exchange端记录

      警告,我们测试了这些设置,它正常工作,但Microsoft不支持


      这是我找到你问题答案的博客

      即使使用graph as aud也会出现同样的错误。{“aud”:“iss”:“iat”:1552573576,“nbf”:1552573576,“exp”:1552577476,“aio”:“42JgYEjYOn3DtYdvWBUE7ks/nDt3LQA=”,…}此外,我开始怀疑IIS是否支持没有用户作为有效令牌的声明。因为显示的错误消息是“此令牌配置文件'V1S2SAppOnly'不适用于当前协议”。另一方面,对于具有用户声明的令牌,我可以看到“user_SET AuthType=“Bearer”,UserName=“S-1-5-21-1392771109-4043059535-3934338706-1147”,SupportsIsInRole=“true”在IIS跟踪日志记录中,但客户端凭据令牌(没有用户声明)在同一点失败@KarthikHebbar ok可能还有更多问题。。至少首先需要正确输入
      aud
      。。进一步的错误消息是这样的,令牌版本可能是一个问题,但我看到您的两个令牌都是v1,所以还没有完全有意义。。你能告诉我你是怎么登记申请的吗?常规
      Azure广告门户
      应用注册预览体验
      apps.dev.microsoft.com
      。。另外,您是如何获得代币的。。使用库或直接REST API调用。。如果可能,请共享一些代码详细信息我使用应用程序注册在Azure门户中注册了应用程序。我目前正在postman中直接调用RESTAPI(直接从代码切换)。令牌URL-、客户端\u id、客户端机密和授予\u类型作为客户端\u凭据。并使用获得的令牌调用api user')/messages/。重要的观察是,对于云用户来说,一切都是完美的。问题在于仅on-prem用户。REST api调用由postman使用前面评论中提到的参数完成。可能重复