• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python python_digest.parse_digest_credentials函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中python_digest.parse_digest_credentials函数的典型用法代码示例。如果您正苦于以下问题:Python parse_digest_credentials函数的具体用法?Python parse_digest_credentials怎么用?Python parse_digest_credentials使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了parse_digest_credentials函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: authenticate

    def authenticate(self, request):
        if not 'HTTP_AUTHORIZATION' in request.META:
            return False

        if not python_digest.is_digest_credential(request.META['HTTP_AUTHORIZATION']):
            return False

        digest_response = python_digest.parse_digest_credentials(
            request.META['HTTP_AUTHORIZATION'])

        if not digest_response:
            _l.debug('authentication failure: supplied digest credentials could not be ' \
                         'parsed: "%s".' % request.META['HTTP_AUTHORIZATION'])
            return False
        
        if not digest_response.realm == self.realm:
            _l.debug('authentication failure: supplied realm "%s" does not match ' \
                         'configured realm "%s".' % ( digest_response.realm, self.realm))
            return False

        if not python_digest.validate_nonce(digest_response.nonce, self.secret_key):
            _l.debug('authentication failure: nonce validation failed.')
            return False

        partial_digest = self._account_storage.get_partial_digest(digest_response.username)
        if not partial_digest:
            _l.debug('authentication failure: no partial digest available for user "%s".' \
                         % digest_response.username)
            return False

        calculated_request_digest = python_digest.calculate_request_digest(
            method=request.method, digest_response=digest_response,
            partial_digest=partial_digest)
        if not calculated_request_digest == digest_response.response:
            _l.debug('authentication failure: supplied request digest does not match ' \
                         'calculated request digest.')
            return False

        if not python_digest.validate_uri(digest_response.uri, request.path):
            _l.debug('authentication failure: digest authentication uri value "%s" does not ' \
                         'match value "%s" from HTTP request line.' % (digest_response.uri,
                                                                       request.path))
            return False

        user = self._account_storage.get_user(digest_response.username)

        if not self._update_existing_nonce(user, digest_response.nonce, digest_response.nc):
            if (python_digest.get_nonce_timestamp(digest_response.nonce) + self.timeout <
                time.time()):
                _l.debug('authentication failure: attempt to establish a new session with ' \
                             'a stale nonce.')
                return False

            if not self._store_nonce(user, digest_response.nonce, digest_response.nc):
                _l.debug('authentication failure: attempt to establish a previously used ' \
                             'or nonce count.')
                return False

        request.user = user
        return True
开发者ID:dimagi,项目名称:carehq,代码行数:60,代码来源:__init__.py


示例2: wrapper

        def wrapper(request, *args, **kwargs):
            authenticator = HttpDigestAuthenticator()
            if not authenticator.authenticate(request):
                return authenticator.build_challenge_response()

            response = f(request, *args, **kwargs)
            if hasattr(response, 'status_code') and response.status_code in [401, 403]:
                return authenticator.build_challenge_response()
            if 200 <= response.status_code < 300:
                digest = python_digest.parse_digest_credentials(
                    request.META['HTTP_AUTHORIZATION'])
                nc = "%08d" % digest.nc
                partial_digest = authenticator._account_storage.get_partial_digest(digest.username)
                parameters = {
                        "username": request.user.username,
                        "ha1": partial_digest,
                        "nonce": digest.nonce,
                        "cnonce": digest.cnonce,
                        "method":digest.algorithm,
                        "uri": digest.uri,
                        "nc": nc,
                        }
                rspauth = calc_rspauth(parameters)
                info = 'rspauth="%s",cnonce="%s",nc=%s,qop=%s' % (rspauth, digest.cnonce,
                        nc, digest.qop)
                response["Authentication-Info"] = info
            return response
开发者ID:amarh,项目名称:openPLM,代码行数:27,代码来源:views.py


示例3: get_username_and_password_from_request

def get_username_and_password_from_request(request):
    """Returns tuple of (username, password). Tuple values
    may be null."""
    from corehq.apps.hqwebapp.utils import decode_password

    if 'HTTP_AUTHORIZATION' not in request.META:
        return None, None

    @sensitive_variables()
    def _decode(string):
        try:
            return string.decode('utf-8')
        except UnicodeDecodeError:
            # https://sentry.io/dimagi/commcarehq/issues/391378081/
            return string.decode('latin1')

    auth = request.META['HTTP_AUTHORIZATION'].split()
    username = password = None
    if auth[0].lower() == DIGEST:
        try:
            digest = parse_digest_credentials(request.META['HTTP_AUTHORIZATION'])
            username = digest.username.lower()
        except UnicodeDecodeError:
            pass
    elif auth[0].lower() == BASIC:
        username, password = _decode(base64.b64decode(auth[1])).split(':', 1)
        username = username.lower()
        # decode password submitted from mobile app login
        password = decode_password(password, username)
    return username, password
开发者ID:dimagi,项目名称:commcare-hq,代码行数:30,代码来源:auth.py


示例4: hello_with_digest_auth

def hello_with_digest_auth(request):
    auth = request.META.get('HTTP_AUTHORIZATION', None)
    if auth is None:
        return _digest_unauthenticated(request)
        
    try:
        method, data = auth.split(' ', 1)
        if 'digest' != method.lower():
            return _digest_unauthenticated(request)
    except:
        raise
        return _digest_unauthenticated(request)
    
    digest_response = python_digest.parse_digest_credentials(auth)
    expected = python_digest.calculate_request_digest(
        request.method,
        python_digest.calculate_partial_digest(digest_response.username, 'DEV', '12345'),
        digest_response)

    if digest_response.response != expected:
        return _digest_unauthenticated(request)

    return HttpResponse('Hello World')



    
    
开发者ID:XemaCobra,项目名称:Cycles,代码行数:23,代码来源:views.py


示例5: is_authenticated

    def is_authenticated(self, request, **kwargs):
        """
        Finds the user and checks their API key.

        Should return either ``True`` if allowed, ``False`` if not or an
        ``HttpResponse`` if you need something custom.
        """
        if not request.META.get('HTTP_AUTHORIZATION'):
            return self._unauthorized()

        try:
            (auth_type, data) = request.META['HTTP_AUTHORIZATION'].split(' ', 1)

            if auth_type != 'Digest':
                return self._unauthorized()
        except:
            return self._unauthorized()

        digest_response = python_digest.parse_digest_credentials(request.META['HTTP_AUTHORIZATION'])

        if not python_digest.validate_nonce(digest_response.nonce, self.secret_key):
            return self._unauthorized()

        try:
            user = self.check_credentials(request=request, digest_response=digest_response.response, username=digest_response.username)
        except Unauthorized:
            return self._unauthorized()

        request.user = user
        return True
开发者ID:garbados,项目名称:piecrust,代码行数:30,代码来源:authentication.py


示例6: _get_username_from_request

def _get_username_from_request(request):
    auth_header = (request.META.get('HTTP_AUTHORIZATION') or '').lower()
    username = None
    if auth_header.startswith('digest '):
        digest = parse_digest_credentials(request.META['HTTP_AUTHORIZATION'])
        username = digest.username
    elif auth_header.startswith('basic '):
        try:
            username = b64decode(request.META['HTTP_AUTHORIZATION'].split()[1]).split(':')[0]
        except IndexError:
            pass
    return username
开发者ID:philipkaare,项目名称:commcare-hq,代码行数:12,代码来源:decorators.py


示例7: is_authenticated

    def is_authenticated(self, request, **kwargs):
        """
        Finds the user and checks their API key.

        Should return either ``True`` if allowed, ``False`` if not or an
        ``HttpResponse`` if you need something custom.
        """
        if not request.META.get('HTTP_AUTHORIZATION'):
            return self._unauthorized()

        try:
            (auth_type, data) = request.META['HTTP_AUTHORIZATION'].split(
                ' ', 1)

            if auth_type.lower() != 'digest':
                return self._unauthorized()
        except:
            return self._unauthorized()

        digest_response = python_digest.parse_digest_credentials(
            request.META['HTTP_AUTHORIZATION'])

        # FIXME: Should the nonce be per-user?
        if not python_digest.validate_nonce(
                digest_response.nonce, getattr(settings, 'SECRET_KEY', '')):
            return self._unauthorized()

        user = self.get_user(digest_response.username)
        api_key = self.get_key(user)

        if user is False or api_key is False:
            return self._unauthorized()

        expected = python_digest.calculate_request_digest(
            request.method,
            python_digest.calculate_partial_digest(digest_response.username,
                                                   self.realm, api_key),
            digest_response)

        if not digest_response.response == expected:
            return self._unauthorized()

        if not self.check_active(user):
            return False

        request.user = user
        return True
开发者ID:mahendra,项目名称:django-tastypie,代码行数:47,代码来源:authentication.py


示例8: is_authenticated

    def is_authenticated(self, request, **kwargs):
        """
        Finds the user and checks their API key.

        Should return either ``True`` if allowed, ``False`` if not or an
        ``HttpResponse`` if you need something custom.
        """
        try:
            self.get_authorization_data(request)
        except ValueError:
            return self._unauthorized()

        digest_response = python_digest.parse_digest_credentials(request.META["HTTP_AUTHORIZATION"])

        # FIXME: Should the nonce be per-user?
        if not python_digest.validate_nonce(digest_response.nonce, settings.SECRET_KEY):
            return self._unauthorized()

        user = self.get_user(digest_response.username)
        api_key = self.get_key(user)

        if user is False or api_key is False:
            return self._unauthorized()

        expected = python_digest.calculate_request_digest(
            request.method,
            python_digest.calculate_partial_digest(digest_response.username, self.realm, api_key),
            digest_response,
        )

        if not digest_response.response == expected:
            return self._unauthorized()

        if not self.check_active(user):
            return False

        request.user = user
        return True
开发者ID:mattbriancon,项目名称:django-tastypie,代码行数:38,代码来源:authentication.py


示例9: authenticate

    def authenticate(self, request):
        """
        Base authentication method, all checks here
        """
        if not request.headers.get('authorization'):
            return False
        if not python_digest.is_digest_credential(
                request.headers.get('authorization')):
            return False
        digest_response = python_digest.parse_digest_credentials(
            request.headers.get('authorization'))
        if not digest_response:
            log.debug('authentication failure: supplied digest credentials'
                      ' could not be parsed: "%s".'
                      % request.headers.get('authorization'))
            return False

        if not digest_response.username:
            return False

        if not digest_response.realm == self.realm:
            log.debug('authentication failure: supplied realm "%s"'
                      'does not match configured realm "%s".'
                      % (digest_response.realm, self.realm))
            return False

        if not python_digest.validate_nonce(
                digest_response.nonce, self.secret_key):
            log.debug('authentication failure: nonce validation failed.')
            return False
        partial_digest = self._account_storage.get_partial_digest(
            digest_response.username)

        if not partial_digest:
            log.debug('authentication failure: no partial digest available'
                      ' for user "%s".' % digest_response.username)
            return False

        calculated_request_digest = python_digest.calculate_request_digest(
            method=request.method, digest_response=digest_response,
            partial_digest=partial_digest)

        if not calculated_request_digest == digest_response.response:
            log.debug('authentication failure: supplied request digest'
                      'does not match calculated request digest.')
            return False

        if not python_digest.validate_uri(
                digest_response.uri, urllib.parse.unquote(request.path)):
            log.debug('authentication failure: digest authentication uri value'
                      '"%s" does not match value "%s" from HTTP'
                      'request line.' % (digest_response.uri, request.path))
            return False

        if not self._account_storage.is_admin(digest_response.username):
            log.debug('authentication failure: user not in operator admin.')
            return False

        if hasattr(request,'session') and request.session.data.nonce != digest_response.nonce:
            if (int(python_digest.get_nonce_timestamp(digest_response.nonce))
                    + self.timeout < time.time()):
                log.debug('authentication failure: attempt to establish'
                          ' a new session with a stale nonce.')
                return False
            if not self._store_nonce(digest_response.nonce, request):
                log.debug('authentication failure: attempt to establish'
                          ' a previously used or nonce count.')
                return False
        request.user = self._account_storage.get_by_login(
            digest_response.username)
        return True
开发者ID:SandStormHoldings,项目名称:NoodlesFramework,代码行数:71,代码来源:__init__.py


示例10: checkUserId

    def checkUserId(self, requestedUid=None, anonymous=False):
        if ('Authorization' not in self.__req.headers):
            self.__setAuthenticate()
            raise AuthError('User#auth need user Authentification', 401, 20)

        #XXX check header validity
        http_authorization_header = self.__req.headers['Authorization']

        digest_response = python_digest.parse_digest_credentials(
            http_authorization_header)

        if digest_response is None:
            self.__setAuthenticate()
            raise AuthError('User#Auth need digest authentification', 401, 21)

        if digest_response.uri != self.__req.path_qs:
            self.__setAuthenticate()
            raise AuthError('User#Auth invalid uri', 403, 22)

        if (anonymous is True and
                digest_response.username.lower() != "anonymous") or \
            (anonymous is False and
                digest_response.username.lower() == "anonymous"):
            self.__setAuthenticate()
            raise AuthError('User#Auth forbidden', 403, 23)

        if python_digest.validate_nonce(
            digest_response.nonce,
            self.__cfg.get('nonce_secret')
        ) is not True:
            self.__setAuthenticate(True)
            raise AuthError('User#auth invalid nonce', 401, 24)

        #fetch user
        obj = users.Factory.get(digest_response.username)

        if not obj:
            self.__setAuthenticate()
            raise AuthError('User#auth unknown user', 404, 25)

        if obj.activate == 0:
            self.__setAuthenticate()
            raise AuthError('User#auth unactivated user', 403, 26)

        expected_request_digest = python_digest \
            .calculate_request_digest(
                self.__req.method,
                obj.digest,
                digest_response)
        #nonce lifetime
        delta = time.time(
        ) - python_digest.get_nonce_timestamp(digest_response.nonce)

        if delta > self.__cfg.get('nonce_ttl'):
            self.__setAuthenticate(True)
            raise AuthError('User#auth nonce expired', 401, 27)

        #grab session
        sessId = hashlib.sha1(
            digest_response.nonce.encode('utf-8')).hexdigest()
        prevRequest = storage.Memcache().get(sessId, 'session')

        #if not, check memcache status
        if not prevRequest:
            try:
                storage.Memcache().checkAlive()
                self.__setAuthenticate(True)
                raise AuthError('User#auth nonce expired', 401, 28)
            except storage.MemcacheError:
                raise AuthError('Service unavailable', 503, 2)

        #Check nc:
        if not prevRequest or prevRequest['nc'] >= digest_response.nc:
            self.__setAuthenticate(True)
            raise AuthError('User#auth invalid nonce count', 401, 29)

        #check opaque
        if prevRequest['opaque'] != digest_response.opaque:
            self.__setAuthenticate(True)
            raise AuthError('User#auth invalid opaque', 401, 30)

        #check digest response
        if expected_request_digest != digest_response.response:
            self.__setAuthenticate()
            raise AuthError('User#auth invalid credentials', 401, 31)

        #store nonce count
        self.__storeSession(sessId, digest_response.opaque, digest_response.nc)

        if anonymous is False:
            self.__resp.headers['X-Lxxl-User-Token'] = str(obj.getToken())
            self.__resp.headers['X-Lxxl-User-id'] = str(obj.uid)

        self.__resp.headers['X-Lxxl-User-Relation'] = "1"

        return True
开发者ID:Education-Numerique,项目名称:api,代码行数:96,代码来源:auth.py



注:本文中的python_digest.parse_digest_credentials函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python python_digest.validate_nonce函数代码示例发布时间:2022-05-27
下一篇:
Python python_digest.calculate_request_digest函数代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap