Beispiel #1
0
    def clean(self):
        default_domain = getattr(settings,
                                 'OPENSTACK_KEYSTONE_DEFAULT_DOMAIN',
                                 'Default')
        username = self.cleaned_data.get('username')
        password = self.cleaned_data.get('password')
        region = self.cleaned_data.get('region')
        domain = self.cleaned_data.get('domain', default_domain)

        if not (username and password):
            # Don't authenticate, just let the other validators handle it.
            return self.cleaned_data

        try:
            self.user_cache = authenticate(request=self.request,
                                           username=username,
                                           password=password,
                                           user_domain_name=domain,
                                           auth_url=region)
            LOG.info('Login successful for user "%(username)s" using domain '
                     '"%(domain)s", remote address %(remote_ip)s.',
                     {'username': username, 'domain': domain,
                      'remote_ip': utils.get_client_ip(self.request)})
        except exceptions.KeystoneAuthException as exc:
            LOG.info('Login failed for user "%(username)s" using domain '
                     '"%(domain)s", remote address %(remote_ip)s.',
                     {'username': username, 'domain': domain,
                      'remote_ip': utils.get_client_ip(self.request)})
            raise forms.ValidationError(exc)
        if hasattr(self, 'check_for_test_cookie'):  # Dropped in django 1.7
            self.check_for_test_cookie()
        return self.cleaned_data
Beispiel #2
0
    def clean(self):
        default_domain = getattr(settings,
                                 'OPENSTACK_KEYSTONE_DEFAULT_DOMAIN',
                                 'Default')
        username = self.cleaned_data.get('username')
        password = self.cleaned_data.get('password')
        region = self.cleaned_data.get('region')
        domain = self.cleaned_data.get('domain', default_domain)

        if not (username and password):
            # Don't authenticate, just let the other validators handle it.
            return self.cleaned_data

        try:
            self.user_cache = authenticate(request=self.request,
                                           username=username,
                                           password=password,
                                           user_domain_name=domain,
                                           auth_url=region)
            LOG.info('Login successful for user "%(username)s" using domain '
                     '"%(domain)s", remote address %(remote_ip)s.',
                     {'username': username, 'domain': domain,
                      'remote_ip': utils.get_client_ip(self.request)})
        except exceptions.KeystoneAuthException as exc:
            LOG.info('Login failed for user "%(username)s" using domain '
                     '"%(domain)s", remote address %(remote_ip)s.',
                     {'username': username, 'domain': domain,
                      'remote_ip': utils.get_client_ip(self.request)})
            raise forms.ValidationError(exc)
        if hasattr(self, 'check_for_test_cookie'):  # Dropped in django 1.7
            self.check_for_test_cookie()
        return self.cleaned_data
    def clean(self):
        default_domain = settings.OPENSTACK_KEYSTONE_DEFAULT_DOMAIN
        username = self.cleaned_data.get('username')
        password = self.cleaned_data.get('password')
        totp = self.cleaned_data.get('totp')
        domain = self.cleaned_data.get('domain', default_domain)
        region_id = self.cleaned_data.get('region')
        try:
            region = get_region_endpoint(region_id)
        except (ValueError, IndexError, TypeError):
            raise forms.ValidationError("Invalid region %r" % region_id)
        self.cleaned_data['region'] = region

        if not (username and password):
            # Don't authenticate, just let the other validators handle it.
            return self.cleaned_data

        try:
            self.user_cache = authenticate(request=self.request,
                                           username=username,
                                           password=password,
                                           totp=totp,
                                           user_domain_name=domain,
                                           auth_url=region)
            LOG.info(
                'Login successful for user "%(username)s" using domain '
                '"%(domain)s", remote address %(remote_ip)s.', {
                    'username': username,
                    'domain': domain,
                    'remote_ip': utils.get_client_ip(self.request)
                })
        except exceptions.KeystonePassExpiredException as exc:
            LOG.info(
                'Login failed for user "%(username)s" using domain '
                '"%(domain)s", remote address %(remote_ip)s: password'
                ' expired.', {
                    'username': username,
                    'domain': domain,
                    'remote_ip': utils.get_client_ip(self.request)
                })
            if utils.allow_expired_passowrd_change():
                raise
            raise forms.ValidationError(exc)
        except exceptions.KeystoneAuthException as exc:
            LOG.info(
                'Login failed for user "%(username)s" using domain '
                '"%(domain)s", remote address %(remote_ip)s.', {
                    'username': username,
                    'domain': domain,
                    'remote_ip': utils.get_client_ip(self.request)
                })
            raise forms.ValidationError(exc)
        return self.cleaned_data
 def test_with_settings_with_proxy_real_ip(self):
     from openstack_auth.utils import get_client_ip
     self.request.META['REMOTE_ADDR'] = '10.111.111.2'
     self.request.META['HTTP_X_REAL_IP'] = '192.168.15.33'
     self.request.META['HTTP_X_FORWARDED_FOR'] = '172.18.0.2'
     self.assertEqual('192.168.15.33', get_client_ip(self.request))
 def test_with_settings_without_proxy(self):
     from openstack_auth.utils import get_client_ip
     self.request.META['REMOTE_ADDR'] = '10.111.111.2'
     self.assertEqual('10.111.111.2', get_client_ip(self.request))
Beispiel #6
0
 def test_with_settings_without_proxy(self):
     from openstack_auth.utils import get_client_ip
     self.request.META['REMOTE_ADDR'] = '10.111.111.2'
     self.assertEqual('10.111.111.2', get_client_ip(self.request))
Beispiel #7
0
 def test_with_proxy_no_settings(self):
     from openstack_auth.utils import get_client_ip
     self.request.META['REMOTE_ADDR'] = '10.111.111.2'
     self.request.META['HTTP_X_REAL_IP'] = '192.168.15.33'
     self.request.META['HTTP_X_FORWARDED_FOR'] = '172.18.0.2'
     self.assertEqual('10.111.111.2', get_client_ip(self.request))
Beispiel #8
0
 def test_with_settings_with_proxy_forwardfor(self):
     from openstack_auth.utils import get_client_ip
     self.request.META['REMOTE_ADDR'] = '10.111.111.2'
     self.request.META['HTTP_X_FORWARDED_FOR'] = '172.18.0.2'
     self.assertEqual('172.18.0.2', get_client_ip(self.request))