当前位置: 首页 > 知识库问答 >
问题:

OAuth with Office 365 SOAP返回“访问群体声明值无效”

钱瑞
2023-03-14

我一直在尝试使用OAuth将Office 365 Exchange服务集成到web应用程序中。我们已经为内部部署进行了集成,该集成可与基本[用户名:密码]身份验证一起使用https://outlook.office365.com/EWS/Exchange.asmx

授权使用:https://login.microsoftonline.com//oauth2/authorize?response_type=code

使用:POST获取令牌https://login.microsoftonline.com//oauth2/token

正文:grant\u type=授权码

我成功地获得了一个令牌。

我在Azure应用注册上设置的应用程序权限是:

Microsoft图形权限读写用户和共享日历读用户和共享日历以用户身份发送邮件读用户日历对用户日历具有完全访问权限

Office 365 Exchange Online权限读取用户和共享日历读取和写入用户和共享日历以用户身份发送邮件读取用户日历读取和写入用户日历

使用我获得的令牌,我试图创建一个事件使用;https://outlook.office365.com/EWS/Exchange.asmx

标题:

  • POST/EWS/Exchange。asmx HTTP/1.1
  • 主持人:outlook。office365.com
  • 客户端\u请求\u id:[随机\u guid]
  • 用户代理:APPName
  • 授权:持票人[代币]

身体:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" 
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<soap:Header>
    <t:RequestServerVersion Version="Exchange2016"/>
</soap:Header>
<soap:Body>
<m:CreateItem SendMeetingInvitations="SendToAllAndSaveCopy">
    <m:Items>
        <t:CalendarItem>
            <t:Subject>Test Event</t:Subject>
            <t:Body BodyType="HTML">Test Body</t:Body>
            <t:Start>2018-11-17T08:00:00.000</t:Start>
            <t:End>2018-11-17T09:00:00.000</t:End>
            <t:StartTimeZone Id="Pacific Standard Time"/>
            <t:EndTimeZone Id="Pacific Standard Time"/>
        </t:CalendarItem>
    </m:Items>
</m:CreateItem>

这是我收到的回复,状态代码401:

Server →Microsoft-IIS/10.0
request-id →b6d17647-5285-4c40-9087-3875958750b2
X-CalculatedFETarget →MWHPR1601CU001.internal.outlook.com
X-BackEndHttpStatus →401
X-BackEndHttpStatus →401
Set-Cookie →exchangecookie=947fe20a28e842068b3fe78a71b4e15b; path=/
X-FEProxyInfo →MWHPR1601CA0011.NAMPRD16.PROD.OUTLOOK.COM
X-CalculatedBETarget →MWHPR2001MB1823.namprd20.prod.outlook.com
X-RUM-Validated →1
x-ms-diagnostics →2000003;reason="The audience claim value is invalid 'aud'.";error_category="invalid_resource"
X-BeSku →Gen9
X-DiagInfo →MWHPR2001MB1823
X-BEServer →MWHPR2001MB1823
X-FEServer →MWHPR1601CA0011
X-FEServer →BYAPR05CA0077
X-Powered-By →ASP.NET
WWW-Authenticate →Bearer client_id="00000002-0000-0ff1-ce00-000000000000", trusted_issuers="00000001-0000-0000-c000-000000000000@*", token_types="app_asserted_user_v1 service_asserted_app_v1", authorization_uri="https://login.windows.net/common/oauth2/authorize", error="invalid_token",Basic Realm="",Basic Realm="",Basic Realm=""
Date →Wed, 14 Nov 2018 22:07:28 GMT
Content-Length →0

在过去的两天里,我一直在阅读和研究,但在其他开发人员尝试相同集成的地方,我找不到任何类似的东西。

你能告诉我吗?也许有人能解释我做错了什么。

谢谢你!

共有1个答案

阴凯歌
2023-03-14

对于EWS,您应该请求https://outlook.office365.com/EWS.AccessAsUser.All或https://outlook.office365.com/full_access_as_app如果您尝试使用AppOnly标记。其他受约束的作用域对EWS无效,因为它在这方面有点遗留API。

 类似资料:
  • 我已经在Azure AD中注册了一个应用程序。 我已经从那里使用了ClientID 我生成了一个应用程序秘密/密钥 我已经将“完全访问用户邮箱(预览)”权限委派给了该应用程序。 我正在使用ADAL检索访问令牌,如下所示: 我确实拿回了访问令牌。解码值为: 租户确实有Exchange订阅,并且它对邮箱具有完全访问权限。

  • 简介 在单次活体检测(静默活体检测)中,JS SDK一共请求了三次公有云,分别是检测活体(静默活体)、请求活体关键帧图片(可选)以及防HACK检测。SDK将所有返回结果放在一个对象里面返回给开发者。 beforeCheck(data)回调函数 说明 在活体检测开始之前被调用。 data参数 Object类型,主要包含上传的视频文件。 参数 说明 类型 video_file 活体检测采集的视频文件,

  • 无法使用Azure对后端api进行身份验证。在jwt.ms中进行故障排除时,错误表示访问群体无效,但aud声明具有后端api客户端id。

  • 我是Scala期货的新手,我对Scala期货的回报值有疑问。 因此,scala未来的语法通常是 我想知道如何从调用此方法的其他方法访问。 换句话说, 那么应该用什么方法让< code>List[Int]脱离未来呢? 我尝试过使用地图方法,但无法成功做到这一点。

  • 我正在尝试访问秒napshot.data()返回的内容,但有一个问题,如下面的评论所述。我试图创建一个异步函数,但无济于事。知道出了什么问题吗?请查看2条评论。

  • 好的,我已经花了两天的时间来解决这个错误,并找到了一个解决方案。在我的搜索中,我没有找到一个单一的答案来解决我所面临的问题(相反,我找到了多个最终指向解决方案的答案)。因此,我尝试向您解释“访问令牌验证失败。无效访问群体”错误的解决方案: TLDR: 检查“https://graph.Microsoft.com”在https://jwt.ms/上与MSAL进行身份验证时收到的访问令牌中是否作为AU