我想使用 Microsoft 365 OAuth2 对多租户环境中的用户进行身份验证和授权,以使用以下范围进行 IMAP/SMTP 访问:
openid profile email offline_access https://outlook.office.com/IMAP.AccessAsUser.All https://outlook.office.com/SMTP.Send
问题是我需要进行单独的调用来获取与交换相关的访问令牌,并使用另一个调用来获取使用图形范围的用户的电子邮件。
这使得基于 Web 的访问逻辑变得复杂,您需要获取两个单独的身份验证代码和单独的访问令牌才能获取用户电子邮件地址和 imap/smtp 访问令牌。
我需要两者都进行身份验证调用才能访问 Imap/Smtp 例如
var oauth2 = new SaslMechanismOAuth2 (Username, AccessToken);
我没有拨打两个电话,而是想知道是否从交换范围(
https://login.microsoftonline.com/common/oauth2/v2.0/token
)获取了 id 令牌并使用用户电子邮件地址的可选声明,这是否是获取用户电子邮件的可接受方式?此电子邮件始终可用吗?
否则有没有更好的方法来做到这一点(而不是获取两组访问令牌)?
我知道现在回答你的问题已经太晚了,顺便说一句,对于其他可能有同样问题的人来说。
https://login.microsoftonline.com/common/oauth2/v2.0/token
响应包含与用户电子邮件相同的 username
。因此,无需调用任何额外的请求。