我们正在使用Exchange Web服务(SOAP)向Office 365邮箱添加约会,并希望为此实现oAuth2身份验证。
现有文档并未真正涵盖此用例,有两种方法可以注册应用程序:Azure管理门户(旧方式)和应用程序注册门户(新方式)。
新方法有一些指南,但它们都使用https://graph.microsoft.com作为端点,我们需要https://outlook.office365.com/EWS/Exchange.asmx。
我们使用证书并构建客户端断言,但我们无法获得具有https://outlook.office365.com的受众群体声明的令牌。
最接近的是:https://chriswood.me/azure-active-directory-v2-and-exchange-web-services/
它告诉我们如何配置清单中的权限(因为新的应用程序注册门户网站缺少用户界面来执行此操作)。在这里,我们跳过了一个步骤,因为旧的Azure管理门户似乎已经改变了自文章编写以来,我无法在(v1)manaifest中重新创建配置,所以我刚刚合并了发布的内容:
{
"resourceAppId": "00000002-0000-0ff1-ce00-000000000000",
"resourceAccess": [
{
"id": "dc890d15-9560-4a4c-9b7f-a736ec74ec40",
"type": "Role"
}
]
}
进入我的清单。但是,如果在请求令牌时我们指定了除https://graph.microsoft.com.default之外的任何内容作为范围,则下一步失败:
我们从以下地址请求令牌:
https://login.microsoftonline.com/ {tenanat ID} /oauth2/v2.0/token
有效载荷:
client_id={client ID}&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&grant_type=client_credentials&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion=eyJ...
但是这给我们带来了一个JWT,其中有一个观众声称是microsoft.graph。如链接文章所述,我们需要https://outlook.office365.com。我们应该如何格式化有效负载中的scope参数?