【问题标题】:outlook oauth 2.0 and IMAPOutlook oauth 2.0 和 IMAP
【发布时间】:2021-04-29 09:41:00
【问题描述】:

我正在尝试使用 oauth 2.0 来实现 Office 365 帐户的身份验证, 我正在使用 PublicClientApplication 和 InteractiveRequestParameters 方法获取访问令牌,结果成功接收到访问令牌、刷新令牌和 id 令牌,但是当我使用 access_token 连接到 imap 时,我收到错误,因为身份验证失败,谁能帮帮我我在这里错过了什么。

已从 azure 门户授予所有必需的权限。 这是我试图连接到服务器的代码

store.connect("outlook.office365.com", "my_email_id, access_token); //这里store是imap

我设置的属性是: properties.put("mail.smtp.port", "587"); properties.setProperty("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); properties.setProperty("mail.imap.socketFactory.fallback", "false"); properties.setProperty("mail.imap.port", "993"); properties.setProperty("mail.imap.socketFactory.port", "993"); properties.put("incomingHost", "outlook.office365.com"); properties.put("mail.imap.ssl.enable", "true"); properties.put("mail.smtp.starttls.enable", "true"); properties.put("outgoingHost", "smtp.office365.com"); properties.setProperty("mail.imaps.ssl.trust", "*");

注意:当我提供密码而不是 access_token 时,我可以成功登录,但使用 access_token 时失败。

谢谢!!

【问题讨论】:

    标签: email oauth-2.0 office365 msal


    【解决方案1】:

    您不能使用访问令牌代替密码。 IMAP 要求您的客户端使用 SASL XOAUTH2 进行身份验证。详情可见here

    例如,使用访问令牌EwBAAl3BAAUFFpUAo7J3Ve0bjLBWZWCclRC3EoAA 访问test@contoso.onmicrosoft.com 的SASL XOAUTH2 格式为:

    base64("user=test@contoso.onmicrosoft.com^Aauth=Bearer EwBAAl3BAAUFFpUAo7J3Ve0bjLBWZWCclRC3EoAA^A^A")
    

    base64 编码后,这将转换为以下字符串。请注意,为了便于阅读,插入了换行符。

    dXNlcj10ZXN0QGNvbnRvc28ub25taWNyb3NvZnQuY29tAWF1dGg9QmVhcmVy
    IEV3QkFBbDNCQUFVRkZwVUFvN0ozVmUwYmpMQldaV0NjbFJDM0VvQUEBAQ==
    

    【讨论】:

    • 谢谢你,会尝试一次并更新你
    • 你好,请问有什么方法可以使用access_token登录office365吗,我是初学者,不太懂,请帮帮我。
    猜你喜欢
    • 2023-01-24
    • 1970-01-01
    • 2013-03-10
    • 2012-02-26
    • 2015-08-10
    • 2014-08-17
    • 2012-07-01
    • 2012-06-28
    • 2012-11-02
    相关资源
    最近更新 更多