code: def _validate_aud(claims, audience=None):
      
  
      if 'aud' not in claims:
          # if audience:
          #     raise JWTError('Audience claim expected, but not in claims')
          return
  
      audience_claims = claims['aud']
      if isinstance(audience_claims, string_types):
          audience_claims = [audience_claims]
      if not isinstance(audience_claims, list):
          raise JWTClaimsError('Invalid claim format in token')
      if any(not isinstance(c, string_types) for c in audience_claims):
          raise JWTClaimsError('Invalid claim format in token')
      if audience not in audience_claims:
          raise JWTClaimsError('Invalid audience')
docs: Validates that the 'aud' claim is valid.
  
      The "aud" (audience) claim identifies the recipients that the JWT is
      intended for.  Each principal intended to process the JWT MUST
      identify itself with a value in the audience claim.  If the principal
      processing the claim does not identify itself with a value in the
      "aud" claim when this claim is present, then the JWT MUST be
      rejected.  In the general case, the "aud" value is an array of case-
      sensitive strings, each containing a StringOrURI value.  In the
      special case when the JWT has one audience, the "aud" value MAY be a
      single case-sensitive string containing a StringOrURI value.  The
      interpretation of audience values is generally application specific.
      Use of this claim is OPTIONAL.
  
      Args:
          claims (dict): The claims dictionary to validate.
          audience (str): The audience that is verifying the token.