oauth-2.0 Office 365开放式身份验证:使用“client_credentials”访问邮件所需的参数

jvlzgdj9  于 2022-10-31  发布在  其他
关注(0)|答案(1)|浏览(382)

我正在努力编写一个独立的Java后端应用程序,它必须通过IMAP访问Office 365邮箱(来自MS365家庭帐户的Outlook邮件)。
使用的OAuth参数有:

String oAuthAuthorizationURL = "https://login.microsoftonline.com/consumers/oauth2/v2.0/token/";
String oAuthAuthorizationScope = "https://outlook.office365.com/.default";

OAuth应用程序类型定义为:

  • 个人Microsoft帐户用户

API权限(图形API)设置为:

  • IMAP.AccessAsUser.All
  • Mail.ReadWrite
  • 脱机访问
  • 开放的
  • POP.AccessAsUser.All
  • User.Read

在应用程序中,我确实获得了一个Bearer令牌,然后将其传递给Jakarta Mail connect()to outlook.office365.com:993。
其结果是:

A1 AUTHENTICATE XOAUTH2 dXNlcj1hbmR5....................RWpfQncBAQ==
A1 NO AUTHENTICATE failed.

我做错了什么?
谢谢

qacovj5a

qacovj5a1#

·确保您已创建了“客户端密码”并在Java后端应用程序中相应地提及该密码,以便通过在Azure AD中注册的Azure AD应用程序访问Office365邮箱
要使用客户端ID和相关密码配置Java后端应用程序,请参阅以下链接:-
我的天啊
然后,确保将以下**“应用程序权限”作为Azure AD应用程序的API权限**添加到“Microsoft Graph”下:-

第一个月第一个月

·此外,由于您使用Jakarta Mail Connect作为联合应用程序(使用Azure AD的令牌访问Office 365邮箱),因此您需要为“EWS”部分下的“EWS.AccessAsUser.All”授予“委派权限”,如下所示,因为这些权限是通过客户端凭据流访问Office 365 Exchange邮箱所必需的:-

此外,请确保***‘Mail.Read, Mail.ReadBasic, Mail.ReadBasic.All, Mail.ReadWrite, Mail.Send, MailboxSettings.Read, MailboxSettings.ReadWrite, Calenders.Read, Calenders.ReadWrite, Contacts.Read, Contacts.ReadWrite’ delegated permissions are assigned to Microsoft Graph API for that Azure AD app registered***。
因此,当您配置上述内容时,您的Jakarta Mailconnect应用程序应通过Java后端应用程序成功进行身份验证。有关更多信息,请参阅以下链接:-


相关问题