Re: [Imap-protocol] OAUTH and IMAP

Brandon Long <[email protected]>
Newsgroups gmane.mail.imap.general
Message-ID <CABa8R6sJQ0SV5O_udOusA983vE5NNbuRt27VthkCPuMbAge2yA@mail.gmail.com>
I'm not our expert on oauth, he's welcome to pipe up here in a bit.

I'd also point you to our documentation here,
https://developers.google.com/gmail/oauth_overview which at the least has
working examples.



On Tue, Apr 29, 2014 at 10:53 PM, Joshua Cranmer <[email protected]>wrote:

> Hello,
>
> This is a message mostly directed to our fine Gmail server maintainers who
> happen to be listening on this list, but I think the issues here are
> relevant to other people who would read this list and I value the feedback
> of others, so I'm posting this publicly.
>
> Google's recent announcement (<http://googleonlinesecurity.
> blogspot.co.uk/2014/04/new-security-measures-will-affect-older.html>)
> about its authentication polices, I have been led to believe, is in part a
> plea for clients to implement OAuth2.0-based authentication, and an intent
> to degrade experience of users for clients that remain authenticating based
> on common IMAP authentication passwords. I believe that I have a duty to
> the users of Thunderbird to provide them the best experience I can, but I
> believe that I also have the responsibility to help ensure that this
> experience can be easily had by both users of other email services and
> other email clients; the OAuth 2.0 requirements as I have found them put
> these responsibilities in conflict, and I do not want to be in the position
> of having to choose which is the more important one.
>
> So far, I've read the OAuth 2.0 RFC (6749), Google's documentation on its
> OAuth 2.0 implementation [1], and even the most recent draft of integrating
> OAuth into SASL (<http://tools.ietf.org/html/draft-ietf-kitten-sasl-oauth-
> 14>), which is what I view AUTH=XOAUTH2 in GMail's support as being
> analogous to. I have not yet had time to fully digest all the related
> emails about OAuth and SASL on the kitten working group. There has also
> been a discussion on this on Thunderbird's development mailing list (<
> https://mail.mozilla.org/pipermail/tb-planning/2014-April/003236.html>),
> if you're interested in seeing some of the discussion that has already been
> brought up and my or others' personal views on the quality of OAuth 2.0.
>
>
> Pieces of information:
> * Client Identifier: This is required in the RFC, and it is emphatic that
> this is neither secret nor is it to be used alone for client
> authentication. The problem I have here is the registration requirement:
> not that it is hard, but rather that it introduces a discrimination on the
> part of less common mail services that might wish to use this mechanism, if
> clients have to register a separate identifier for every such server. Given
> that such data will evidently be public (e.g., checked into Thunderbird's
> source code; even were it not, it's still a simple matter to intercept all
> outgoing http/https requests and obtain the id from that), and given that
> IMAP already defines an ID call that is used by Thunderbird and other
> clients, if the call is merely to indicate to the user the name of the
> program wishing to obtain authorization, it seems to me that deriving the
> client identifier from the ID call somehow ought to be sufficient.
>

The client identifier here, from my understanding, is different in that its
an actual registered ID, not just some string.  Re-using the ID isn't going
to work, plus, as a SASL mechanism, its supposed to be contained and
generic for use in multiple protocols, so relying on a protocol specific
passing of that information was probably considered non-ideal.


> * Authorization endpoint: Arguably the biggest flaw in the entire process
> is that I see no way to build the HTTPS request to an OAuth authorization
> endpoint without hardcoding specific values.
>
> * Token endpoint: Similar to the authorization endpoint, the location of
> this is also left indeterminable.
>
> * Scope: It seems to me that this part, though technically optional in the
> OAuth specification, is meant to basically be required. For a single
> standardized name, it seems to me that, given that SASL mandates that
> applications using it describe a service name (cf. RFC 4422, section 4), it
> makes sense to use this parameter (or some simple derivation thereof) to
> use as the scope parameter. [2]
>
> * Refresh tokens: Google's documentation on this is vague. At times, it
> implies that these last essentially forever unless the user revokes access.
> At other times (and apparently in experiments), it seems that these last
> only for long-ish terms (e.g., a few weeks). This need to "refresh" the
> refresh tokens would be troubling to me, since it implies that I should be
> attempting to do more things in my power to autofill the server's
> authentication mechanisms without the user knowing, in accordance with the
> user's wish to not have to retype passwords implied by saving these
> credentials in our password manager. This sort of action appears to be
> contrary to the goals of OAuth 2.0, though.
>
> Providing this information via some sort of autoconfigurable,
> autodiscoverable mechanism given only the user's email and/or server name
> is, in my mind, absolutely necessary before any attempt to implement this
> in Thunderbird is started. While tying the records to DNS is theoretically
> better since a chain of trust can be followed with DANE, many clients may
> find it easier to look it up at some well-known URL similar to how
> Thunderbird's autoconfiguration mechanism already works.
>

Yes, as far as I know, there is no discoverability mechanism as of yet.


> [1] Which is rather infuriating and confusing if all you're trying to do
> is figure out how to use AUTH=XOAUTH2, as most of the documentation is
> clearly geared towards usecases specific to other APIs and not IMAP or SMTP
> access.
>

Ah, is this the documentation I pointed out above?  Happy to pass on any
feedback to the docs folks.

[2] On careful rereading of the SASL OAUTHBEARER draft it seems that it is
> possible to automatically infer the desired scope... but only by executing
> a AUTHENTICATE command that fails, which is rather suboptimal workflow for
> trying to develop client behavior in this regard. It means, e.g., I can't
> wrap the OAUTH support in a generic SASL provider mechanism and expect to
> have it pick up the desired scope information. It's also suboptimal that
> the information about scope is revealed but not any other hints about how
> to go about requesting authorization.
>
> --
> Joshua Cranmer
> Thunderbird contributor
> DXR coauthor
>
> _______________________________________________
> Imap-protocol mailing list
> [email protected]
> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol
>

_______________________________________________
Imap-protocol mailing list
[email protected]
http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.