Microsoft Azure OAuth 2.0身份验证失败

x7rlezfr  于 2022-09-21  发布在  其他
关注(0)|答案(1)|浏览(489)

斯泽纳里奥:

我正在编写一个Java应用程序,它应该从个人Microsoft Outlook帐户(Microsoft 365系列)读取电子邮件。

在Azure门户中,注册了一个应用程序(“来自个人帐户的应用程序”):

API权限设置为:

  • IMAP.AccessAsUser.all
  • 邮件.读写
  • POP.AccessAsUser.all
  • 用户.阅读
  • (所有“是否需要管理员同意=否”)

已创建客户端密码

  • Java CONNECT THU Jakarta Mail返回“A1无身份验证失败”

步骤:

客户端凭据流成功并返回持有者令牌

  • 应用程序使用Java Jakarta Mail API,并设置了以下属性:
Mail property mail.imaps.auth.login.disabe: true
Mail property mail.imaps.auth.plain.disable: true
Mail property mail.debug.auth.password: false
Mail property mail.mime.ignoreunknownencoding: true
Mail property mail.imaps.port: 993
Mail property mail.imaps.sasl.mechanisms: XOAUTH2
Mail property mail.store.protocol: imaps
Mail property mail.imaps.ssl.enable: true
Mail property mail.imaps.partialfetch: false
Mail property mail.mime.decodetext.strict: false
Mail property mail.debug.auth: true
Mail property mail.imaps.peek: true
Mail property mail.imaps.sasl.enable: true
  • 雅加达邮件调试文件:
DEBUG: setDebug: Jakarta Mail version 1.6.7
DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle]
DEBUG IMAPS: mail.imap.partialfetch: false
DEBUG IMAPS: mail.imap.ignorebodystructuresize: false
DEBUG IMAPS: mail.imap.statuscachetimeout: 1000
DEBUG IMAPS: mail.imap.appendbuffersize: -1
DEBUG IMAPS: mail.imap.minidletime: 10
DEBUG IMAPS: enable SASL
DEBUG IMAPS: SASL mechanisms allowed: XOAUTH2
DEBUG IMAPS: peek
DEBUG IMAPS: closeFoldersOnStoreFailure
DEBUG IMAPS: trying to connect to host "outlook.office365.com", port 993, isSSL true

* OK The Microsoft Exchange IMAP4 service is ready. [WgBSADAAUAAyADcAOABDAEEAMAAwADQANwAuAEMASABFAFAAMgA3ADgALgBQAFIATwBEAC4ATwBVAFQATABPAE8ASwAuAEMATwBNAA==]

A0 CAPABILITY

* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+

A0 OK CAPABILITY completed.
DEBUG IMAPS: AUTH: PLAIN
DEBUG IMAPS: AUTH: XOAUTH2
DEBUG IMAPS: protocolConnect login, host=outlook.office365.com, user=xxxxxx@outlook.com, password=<non-null>
DEBUG IMAPS: SASL Mechanisms:
DEBUG IMAPS:  XOAUTH2
DEBUG IMAPS: 
DEBUG IMAPS: SASL client XOAUTH2
DEBUG IMAPS: SASL callback length: 2
DEBUG IMAPS: SASL callback 0: javax.security.auth.callback.NameCallback@aba95da8
DEBUG IMAPS: SASL callback 1: javax.security.auth.callback.PasswordCallback@f96503dd
A1 AUTHENTICATE XOAUTH2 dXNlcj1hbmR5....................RWpfQncBAQ==
A1 NO AUTHENTICATE failed.
  • 传入的字符串dxNl...aq==可以进行Base64解码,并显示正确的语法。
  • 导致此身份验证错误的原因是什么?

非常感谢你的指点,安迪

更新

我还将应用程序类型更改为“所有Microsoft帐户用户”,但没有成功。

API权限设置为

OAuth 2.0参数包括

授权URL:https://login.microsoftonline.com/consumers/oauth2/v2.0/token/授权范围:https://outlook.office.com/.default

我确实收到了持有者令牌,但它对MS 365系列和Java Jakarta Mail无效。

3bygqnnd

3bygqnnd1#

谢谢你伸出援手。A1无身份验证失败错误是由未为正确的资源+范围集颁发访问令牌引起的。

请将作用域https://graph.microsoft.com/.default替换为https://outlook.office.com/.default

有关详细信息,请参阅使用OAuth验证IMAP、POP或SMTP连接中的访问令牌

如果你还需要什么,请告诉我!

相关问题