azure-active-directory - Azure 客户端凭据授予誓言在 Graph Mail API 访问的混合设置中不起作用
问题描述
在混合设置中,如果客户端凭据授予类型用于获取令牌并且该令牌用于获取本地用户消息 ( https://graph.microsoft.com/v1.0/users ('onpremuser@onpremdomain.com' )/messages/) 使用图形 api 它通过提供 UnknownError 失败。
在 IIS 日志上调试时显示的错误是“此令牌配置文件 'V1S2SAppOnly' 不适用于当前协议。” error_category="invalid_token"。
但是,如果授权码授权或资源所有者密码凭证 (ROPC) 授权用于获取令牌,我们能够使用图形 API 获取本地用户的消息。已附上两者的令牌屏幕截图。如何使用图形 API(在混合设置中)使客户端凭据授予对本地用户消息访问起作用?
更新
更新我在 Exchange 服务器中编辑了其余的 web.config 以在配置文件中包含 V1S2SAppOnly。在之前的错误消失之后,会看到新的错误。
BEARER+客户端=“ 00000002-0000-0F1-CE00-00000000000000000000000000000000000000000000000000000000000000000000来+error="invalid_token" 2000008;reason=" +token+should+have+valid+permissions+or+linked+account+associated+with+partner+application+'00000003-0000-0000-c000-000000000000 '."; error_category="invalid_grant"
解决方案
我认为问题aud
在于声明,即令牌的受众。
对于您共享的第一个令牌
aud
值为00000002-0000-0000-c000-000000000000
。这是 Azure AD Graph API 而不是 Microsoft Graph API 的资源 ID。对于 Microsoft Graph API,您应该使用https://graph.microsoft.com
or Id00000003-0000-0000-c000-000000000000
- 此令牌可能是您使用客户端凭据授予的令牌,因为没有任何用户声明
对于您共享的第二个令牌
aud
值https://graph.microsoft.com
是正确的- 这个令牌是在用户名的上下文中获取的,
anoop
所以我想这是为你工作的那个。
推荐阅读
- r - 如何使用扩展函数获得与 cast() 等效的结果
- python - ImportError:没有名为 deepmolecule.rdkit_utils 的模块
- jenkins - Jenkind 删除构建日志和从属构建日志
- jquery - 不要在 $.get() 之后在控制台中显示 404
- php - 如何使用 Carbon 将日期时间字符串解析为当前默认时区?
- ruby-on-rails - 带有 Rails 和 React 的 SAMP
- c# - 如何从 xml 文件中读取参数值?
- sql-server - 找出哪个数据库消耗了多少内存
- php - 如何使用 php 函数而不是默认的 WP 函数从主页中排除类别?
- javascript - 使用 ngFor 时折叠某些表格/单元格的好方法