gpt4 book ai didi

azure - 使用 javamail 和 OAUTH2 从独立应用程序访问 Outlook.office365.com

转载 作者:行者123 更新时间:2023-12-03 03:48:51 32 4
gpt4 key购买 nike

我们有一个独立的 Java 应用程序,可以使用基本授权连接到 Outlook.office365.com。这是一个简单的监控应用程序。

我被要求将其移至“现代”授权,因此这似乎是创建一个 Azure 应用程序来获取 OAUTH2 的访问 token 。我“认为”我已正确设置所有设置,包括 Microsoft 图形 API(委托(delegate))

电子邮件IMAP.AccessAsUser.All离线访问SMTP.发送

因此,我从以下位置检索访问 token : https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token使用 client_credentials 授予类型传递客户端 ID 和 key 。

更改 java 代码以使用 OAUTH2 并使用 token 作为密码后,我收到登录失败消息。

DEBUG: JavaMail version 1.5.4
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: setDebug: JavaMail version 1.5.4
DEBUG: getProvider() returning javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle]
DEBUG IMAP: mail.imap.fetchsize: 16384
DEBUG IMAP: mail.imap.ignorebodystructuresize: false
DEBUG IMAP: mail.imap.statuscachetimeout: 1000
DEBUG IMAP: mail.imap.appendbuffersize: -1
DEBUG IMAP: mail.imap.minidletime: 10
DEBUG IMAP: disable AUTH=LOGIN
DEBUG IMAP: disable AUTH=PLAIN
DEBUG IMAP: closeFoldersOnStoreFailure
DEBUG IMAP: trying to connect to host "outlook.office365.com", port 993, isSSL true
* OK The Microsoft Exchange IMAP4 service is ready. [QgBMAEEAUAB...]
A0 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS MOVE ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
A0 OK CAPABILITY completed.
DEBUG IMAP: AUTH: PLAIN
DEBUG IMAP: AUTH: XOAUTH2
DEBUG IMAP: protocolConnect login, host=outlook.office365.com, <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="43363026317e2031222a246d34262f372c2d033b3a396d202c2e" rel="noreferrer noopener nofollow">[email protected]</a>, password=<non-null>
A1 LOGIN <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="284b5a49414f065f4d445c474668505152064b4745" rel="noreferrer noopener nofollow">[email protected]</a> {1508+}
eyJ0eXAiOiJKV1QiLCJub25.....
A1 NO LOGIN failed.

我是不是漏掉了一步?我读过的大多数有关访问 Outlook 的帖子都是来自网络应用程序,而不是独立的应用程序。

提前致谢,克雷格

最佳答案

请勿使用 client_credentials 授予类型来获取访问 token 。由于 client_credentials 流程通常在没有用户参与的守护进程中使用,因此通常需要向应用程序授予应用程序权限,而不是委派权限。据我所知:不支持通过 OAuth2 客户端凭据授予流程对 IMAP、POP、SMTP AUTH 协议(protocol)进行 OAuth 访问。

因此,我建议您使用auth code flow ,需要您在浏览器中获取授权码,然后使用授权码兑换access token。

关于azure - 使用 javamail 和 OAUTH2 从独立应用程序访问 Outlook.office365.com,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67808445/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com