Class SASLXOauth2Mechanism

java.lang.Object
org.jivesoftware.smack.sasl.SASLMechanism
org.jivesoftware.smack.sasl.core.SASLXOauth2Mechanism
All Implemented Interfaces:
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.

  • Field Details

  • Constructor Details

    • SASLXOauth2Mechanism

      public SASLXOauth2Mechanism()
  • Method Details

    • authenticateInternal

      protected void authenticateInternal(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 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.
    • newInstance

      public SASLXOauth2Mechanism newInstance()
      Specified by:
      newInstance in class SASLMechanism
    • checkIfSuccessfulOrThrow

      public void checkIfSuccessfulOrThrow()
      Specified by:
      checkIfSuccessfulOrThrow in class SASLMechanism