code: function(options) {
    if (!options) {
      throw new ArgumentError('Missing authenticator options');
    }
  
    if (typeof options !== 'object') {
      throw new ArgumentError('The authenticator options must be an object');
    }
  
    /**
     * Options object for the Rest Client instace.
     *
     * @type {Object}
     */
    var clientOptions = {
      errorFormatter: { message: 'message', name: 'error' }
    };
  
    this.oauth = new RestClient(options.baseUrl + '/oauth/:type', clientOptions);
    this.oauthWithIDTokenValidation = new OAUthWithIDTokenValidation(this.oauth, options);
    this.clientId = options.clientId;
    this.clientSecret = options.clientSecret;
  }
docs: @class
  Abstracts the sign-in, sign-up and change-password processes for Database &
  Active Directory authentication services.
  @constructor
  @memberOf module:auth
  
  @param  {Object}              options                Authenticator options.
  @param  {String}              options.baseUrl        The Auth0 account URL.
  @param  {String}              options.domain         AuthenticationClient server domain
  @param  {String}              [options.clientId]     Default client ID.
  @param  {String}              [options.clientSecret] Default client Secret.