code: function(oauth, options) {
    if (!oauth) {
      throw new ArgumentError('Missing OAuthAuthenticator param');
    }
  
    if (!options) {
      throw new ArgumentError('Missing authenticator options');
    }
  
    if (typeof options !== 'object') {
      throw new ArgumentError('The authenticator options must be an object');
    }
  
    this.oauth = oauth;
    this.clientId = options.clientId;
    this.clientSecret = options.clientSecret;
    this.domain = options.domain;
    this.supportedAlgorithms = options.supportedAlgorithms || ['HS256', 'RS256'];
    this._jwksClient = jwksClient({
      jwksUri: 'https://' + options.domain + '/.well-known/jwks.json'
    });
  }
docs: @class
  Abstracts the `oauth.create` method with additional id_token validation
  @constructor
  @memberOf module:auth
  
  @param  {Object}              oauth                           An instance of @type {OAuthAuthenticator}
  @param  {Object}              options                         Authenticator options.
  @param  {String}              options.domain                  AuthenticationClient server domain
  @param  {String}              [options.clientId]              Default client ID.
  @param  {String}              [options.clientSecret]          Default client Secret.
  @param  {String}              [options.supportedAlgorithms]   Algorithms that your application expects to receive