L'authentification OAUTHBEARER échoue dans mutt

Aug 28 2020

J'ai utilisé l' OAUTHBEARERauthentification à utiliser muttavec GMail pendant un certain temps, mais j'ai rencontré un problème que je ne peux pas comprendre. Quand je lance, muttje reçois OAUTHBEARER authentication failed. Voici .muttdebug0:

[2020-08-27 10:38:59] TLSv1.3 connection using TLSv1.3 (TLS_AES_256_GCM_SHA384)
[2020-08-27 10:39:00] Connected to imap.gmail.com:993 on fd=7
[2020-08-27 10:39:00] imap_cmd_step: grew buffer to 512 bytes
[2020-08-27 10:39:00] 7< * OK Gimap ready for requests from XX.XX.XX.XX r65mb112981108pjg
[2020-08-27 10:39:00] IMAP queue drained
[2020-08-27 10:39:00] 7> a0000 CAPABILITY
[2020-08-27 10:39:00] 7< * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN AUTH=OAUTHBEARER AUTH=XOAUTH
[2020-08-27 10:39:00] Handling CAPABILITY
[2020-08-27 10:39:00] 7< a0000 OK Thats all she wrote! r65mb112981108pjg
[2020-08-27 10:39:00] IMAP queue drained
[2020-08-27 10:39:00] imap_authenticate: Trying method oauthbearer
[2020-08-27 10:39:00] Authenticating (OAUTHBEARER)...
[2020-08-27 10:39:00] 7> a0001 AUTHENTICATE OAUTHBEARER bixhPWN3YWxrYXRyb25AZ21haWwuXXXXX=
[2020-08-27 10:39:01] 7< + eyJXXXXXXX29nbGUuY29tLyJ9
[2020-08-27 10:39:01] 7> [2020-08-27 10:39:01] OAUTHBEARER authentication failed.

J'ai un projet mis en place dans la console Google Dev et un client_idet client_secret. Je un avertissement que je dois ignorer spécifiquement au sujet de mon application Google Developer étant non vérifiées que je dois autoriser explicitement. Je ne me souviens pas que ce soit un problème dans le passé. Je peux me connecter avec succès en utilisant:

oauth2.py [email protected] --client_id=56843257498 --client_secret=fjdksla --generate_oauth2_token

C'est dans mon .muttrc:

set imap_oauth_refresh_command="~me/bin/oauth2.py \
    --user [email protected] \
    --client_id=60080XXX.apps.googleusercontent.com \
    --client_secret=AZXXXX \
    --refresh_token=1//XXXXAYSNwF"
set smtp_oauth_refresh_command="~me/bin/oauth2.py \
    [email protected] \
    --client_id=60080XXX.apps.googleusercontent.com \
    --client_secret=AZXXXX \
    --refresh_token=1//XXXXAYSNwF"

Les commandes ci-dessus fonctionnent correctement dans un shell. En outre, un test avec oauth2.py réussit également (bien que ce teste XOAUTH2et non OAUTHBEARER).

  10:30.51 > HNNF1 AUTHENTICATE XOAUTH2
  10:30.54 < +
  10:30.54 write literal size 280
  10:31.24 < * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE APPENDLIMIT=35651584
  10:31.24 < HNNF1 OK [email protected] authenticated (Success)
  10:31.24 > HNNF2 SELECT INBOX
  10:31.50 < * FLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $Junk $NotJunk $NotPhishing $Phishing) 10:31.50 < * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $Junk $NotJunk $NotPhishing $Phishing \*)] Flags permitted.
  10:31.50 < * OK [UIDVALIDITY 2] UIDs valid.
  10:31.50 < * 1060 EXISTS
  10:31.50 < * 0 RECENT
  10:31.50 < * OK [UIDNEXT 51915] Predicted next UID.
  10:31.50 < * OK [HIGHESTMODSEQ 5748372]
  10:31.50 < HNNF2 OK [READ-WRITE] INBOX selected. (Success)

J'ai tout mis en place et je travaille pour mon courrier électronique professionnel, mais pas pour mon personnel. J'ai l'impression de manquer quelque chose de simple. Quelqu'un peut-il m'aider à voir mon erreur?

Réponses

2 ChrisW. Aug 29 2020 at 00:07

J'ai compris cela. J'ai eu un changement dans mon oauth2.pyqui a imprimé la réponse json au lieu de juste le access_token. muttpassait le json encodé en base64 comme jeton de support, ce qui n'est pas correct. Merci à @ jakub-jindra de m'avoir indiqué l' --quietoption.

J'ai compris cela en exécutant mutt -d 5ce qui montre la charge utile encodée en base64 qu'il transmet à GMail:

[2020-08-28 10:00:54] Authenticating (OAUTHBEARER)...
[2020-08-28 10:00:54] 7> a0001 AUTHENTICATE OAUTHBEARER XXXXXXXXXX$XXXXInfQEB
[2020-08-28 10:00:55] 7< + XXXXXXXXXX
[2020-08-28 10:00:55] 7> [2020-08-28 10:00:55] OAUTHBEARER authentication failed.

Je l'ai décodé en base 64 et j'ai obtenu:

n,[email protected],host=imap.gmail.comport=993auth=Bearer {u'access_token': u'ya29.a0XXXXXX', u'scope': u'https://mail.google.com/', u'expires_in': 3599, u'token_type': u'Bearer'}

J'espère que cela aide quelqu'un!

2 JakubJindra Aug 28 2020 at 14:27

Selon l'exemple dans les documents mutt ou neomutt, le script oauth2.py dans {smtp,imap,pop}_oauth_refresh_commanddevrait inclure l' --quietoption.

Il ne ressort pas clairement de la documentation que cela est important. Mais je viens de le tester sur ma configuration avec SMTP. Sans l'option, j'obtiens également une erreur d'authentification.