def authenticate(self, handler, data):
        username = data['username']
        password = data['password']

        self.log.debug("Server address:", self.server_address)
        self.log.debug("Service address:", self.service_address)

        # No empty passwords!
        if password is None or password.strip() == '':
            self.log.warn('username:%s Login denied for blank password',
                          username)
            return None

        try:
            caslib.login_to_cas_service(self.server_address, username,
                                        password, self.service_address)
            return username
        except Exception as e:
            return None
예제 #2
0
파일: query.py 프로젝트: nrao/mynrao
    def get_user_data(self, username=None, email=None, global_id=None, database_id=None):
        '''Try to retrieve user profile information for a user'''

        scheme, host, path, params, query, fragment = urlparse(self.url)
        if username:
            query = urlencode([('userByAccountNameEquals', username)], True)
	elif email:
            query = urlencode([('userByEmailAddressEquals', email)], True)
        elif global_id:
            query = urlencode([('userByGlobalId', global_id)], True)
        elif database_id:
            query = urlencode([('userById', database_id)], True)
        else:
            raise TypeError('%s.get_user_data requires a username or database_id keyword argument' % type(self).__name__)
        url = urlunparse((scheme, host, path, params, query, fragment))

        _log.info('Retrieving user profile for: %s', username or '#%s' % database_id)

        try:
            user_data = self._get_user_data(url)

        except TryAuthenticating, e:
            # TryAuthenticating may be a good idea, better tell an adult!
            if not e.login_url or not self.username:
                _log.exception(e)
                raise

            # This may raise a URLError or CASLoginError.  There's nothing much
            # to be done about it though, so I'm not handling it.
            _log.info('Failed: %s', e)
            # FIXME: It would be good to check that we haven't been redirected
            # someplace strange before we send off our credentials.  Hopefully
            # certificate validation will lessen this possibility.
            login_to_cas_service(e.login_url, self.username, self.password, opener=self.opener)

            # If that worked, then give it another go
            user_data = self._get_user_data(url)
예제 #3
0
 def cas_renew(self):
     """Renew CAS login.
     
     Returns :
     file_obj - a file handle with the result
     url_obj: urllib2 opener with cookiejar
     """
     self._file_obj, self._url_obj = caslib.login_to_cas_service(
                                             self.get_login_url(renew=True),
                                             self._username,
                                             self._password)
     # add handler for POST requests (used by cmd_create_file)
     self._url_obj.add_handler(MultipartPostHandler.MultipartPostHandler())
     # with renew the ticket changed, update it
     self._set_ticket()
예제 #4
0
 def cas_login(self):
     """Login to CAS using the supplied username/password.
     
     Returns :
     file_obj - a file handle with the result
     url_obj: urllib2 opener with cookiejar
     """
     self._file_obj, self._url_obj = caslib.login_to_cas_service(
                                             self.get_login_url(),
                                             self._username,
                                             self._password)
     # add handler for POST requests (used by cmd_create_file)
     self._url_obj.add_handler(MultipartPostHandler.MultipartPostHandler())
     # set the cas ticket for quick access
     self._set_ticket()