docs: def authenticate(self, request, ticket, service):
          """
          Verifies CAS ticket and gets or creates User object
          NB: Use of PT to identify proxy
          """
  
          User = get_user_model()
          username = _verify(ticket, service)
  
          if not username:
              return None
  
          try:
              user = User.objects.get(username__iexact=username)
          except User.DoesNotExist:
              # user will have an "unusable" password
              if settings.CAS_AUTO_CREATE_USER:
                  user = User.objects.create_user(username, '')
                  user.save()
              else:
                  user = None
          return user