我正在努力编写一个独立的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.
我做错了什么?
谢谢
1条答案
按热度按时间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后端应用程序成功进行身份验证。有关更多信息,请参阅以下链接:-