Class SASLXOauth2Mechanism

  • All Implemented Interfaces:
    java.lang.Comparable<SASLMechanism>

    public class SASLXOauth2Mechanism
    extends SASLMechanism
    The SASL X-OAUTH2 mechanism as described in https://developers.google .com/talk/jep_extensions/oauth

    The given password will be used as OAUTH token.

    Note that X-OAUTH2 is experimental in Smack. This is because Google defined, besides being a bad practice (XEP-134), custom attributes to the 'auth' stanza, as can be seen here

     
     <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="X-OAUTH2"
        auth:service="chromiumsync" auth:allow-generated-jid="true"
        auth:client-uses-full-bind-result="true" xmlns:auth="http://www.google.com/talk/protocol/auth">
     
     
    from https://developers.google.com/cloud-print/docs/rawxmpp and here
     
     <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl"
       mechanism="X-OAUTH2"
       auth:service="oauth2"
       xmlns:auth="http://www.google.com/talk/protocol/auth">
     base64("\0" + user_name + "\0" + oauth_token)
     </auth>
     
     
    from https://developers.google.com/talk/jep_extensions/oauth

    Those attribute extensions are currently not supported by Smack, and it's unclear how it affects authorization and how widely they are used.

    • Constructor Detail

      • SASLXOauth2Mechanism

        public SASLXOauth2Mechanism()
    • Method Detail

      • authenticateInternal

        protected void authenticateInternal​(javax.security.auth.callback.CallbackHandler cbh)
        Specified by:
        authenticateInternal in class SASLMechanism
      • getAuthenticationText

        protected byte[] getAuthenticationText()
        Description copied from class: SASLMechanism
        Should return the initial response of the SASL mechanism. The returned byte array will be send base64 encoded to the server. SASL mechanism are free to return null or an empty array here.
        Specified by:
        getAuthenticationText in class SASLMechanism
        Returns:
        the initial response or null
      • getName

        public java.lang.String getName()
        Description copied from class: SASLMechanism
        Returns the common name of the SASL mechanism. E.g.: PLAIN, DIGEST-MD5 or GSSAPI.
        Specified by:
        getName in class SASLMechanism
        Returns:
        the common name of the SASL mechanism.
      • getPriority

        public int getPriority()
        Description copied from class: SASLMechanism
        Get the priority of this SASL mechanism. Lower values mean higher priority.
        Specified by:
        getPriority in class SASLMechanism
        Returns:
        the priority of this SASL mechanism.