コード例 #1
0
 def credentials_lookup(id):
     
     #if id == "test":
     #    return get_access_key_model()(id="test", secret="test").as_internal_credentials()
     
     try:
         key = get_access_key_model().objects.get(id=id)
     except get_access_key_model().DoesNotExist:                
         raise InvalidKey
         
     if key.is_valid():
         return key.as_internal_credentials()
     else:
         raise ApiKeyNeedsRevalidation
コード例 #2
0
        def credentials_lookup(id):

            #if id == "test":
            #    return get_access_key_model()(id="test", secret="test").as_internal_credentials()

            try:
                key = get_access_key_model().objects.get(id=id)
            except get_access_key_model().DoesNotExist:
                raise InvalidKey

            if key.is_valid():
                return key.as_internal_credentials()
            else:
                raise ApiKeyNeedsRevalidation
コード例 #3
0
 def process_request(self, request):
     if "HTTP_AUTHORIZATION" in request.META:
         if request.META["HTTP_AUTHORIZATION"].startswith('Hawk '):
             try:
                 req = self.get_request_dict(request)
                 
                 artifacts = hawk.Server(req = req, credentials_fn = self.get_credentials_lookup()).authenticate(req, {
                 #'payload': req.DATA #TODO
                 })
                 
                 if False: #if timestamp out of time
                     pass
                     # TODO
                     # return Response with current timestemp for sync
                 
                 api_user_id = artifacts['id']
                 
                 api_user    =   get_access_key_model().objects.get(
                         id = api_user_id
                         )
                 api_user.set_artifacts(artifacts)
                 
                 request.api_user = api_user
             except hawk.server.BadTimingRequest, e:
                 return get_SyncNeeded_Response(request, e.ts)
             except hawk.util.HawkException, e:
                 return get_HawkExceptions_Response(request, e)
                 raise#return None # TODO raise Exception?
             except ApiKeyNeedsRevalidation, e:
                 return get_RevalidationException_Response(request, e)
コード例 #4
0
    def process_request(self, request):
        if "HTTP_AUTHORIZATION" in request.META:
            if request.META["HTTP_AUTHORIZATION"].startswith('Hawk '):
                try:
                    req = self.get_request_dict(request)

                    artifacts = hawk.Server(
                        req=req, credentials_fn=self.get_credentials_lookup(
                        )).authenticate(
                            req,
                            {
                                #'payload': req.DATA #TODO
                            })

                    if False:  #if timestamp out of time
                        pass
                        # TODO
                        # return Response with current timestemp for sync

                    api_user_id = artifacts['id']

                    api_user = get_access_key_model().objects.get(
                        id=api_user_id)
                    api_user.set_artifacts(artifacts)

                    request.api_user = api_user
                except hawk.util.HawkException, e:
                    return get_HawkExceptions_Response(request, e)
                    raise  #return None # TODO raise Exception?
                except ApiKeyNeedsRevalidation, e:
                    return get_RevalidationException_Response(request, e)
                except InvalidKey, e:
                    return get_InvalidKeyException_Response(request, e)
コード例 #5
0
 def authenticate(self, request):
     consumer_key=None
     consumer_secret=None
     access_key=None
     access_secret=None
     try:
         consumer = get_consumer_model().objects.get_by_natural_key(consumer_key)
         
         if consumer.check_password(consumer_secret):
             if consumer.is_active:
                 user_access = get_access_key_model().objects.get_by_natural_key(access_key)
                 
                 if user_access.check_password(access_secret):
                     if user_access.is_active:
                         return user_access, None
             
     except get_consumer_model().DoesNotExist:
         return None
     except get_access_key_model().DoesNotExist:
         return None
コード例 #6
0
    def authenticate(self, request):
        consumer_key = None
        consumer_secret = None
        access_key = None
        access_secret = None
        try:
            consumer = get_consumer_model().objects.get_by_natural_key(
                consumer_key)

            if consumer.check_password(consumer_secret):
                if consumer.is_active:
                    user_access = get_access_key_model(
                    ).objects.get_by_natural_key(access_key)

                    if user_access.check_password(access_secret):
                        if user_access.is_active:
                            return user_access, None

        except get_consumer_model().DoesNotExist:
            return None
        except get_access_key_model().DoesNotExist:
            return None
コード例 #7
0
def get_credentials__same_system(user, consumer_identifier, client_settings=None):
    length_identifier = 32 #str(uuid) length
    length_secret = 20
    import random, string
    
    AccessKey = get_access_key_model()
    Consumer = get_consumer_model()
    
    consumer = Consumer.objects.get(identifier = consumer_identifier)
    key = AccessKey.objects.create(
            user=             user,
            #auto generated id=                 ''.join(random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits) for x in range(length_identifier)),
            secret=             ''.join(random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits) for x in range(length_secret)),
            consumer        = consumer
        )
    
    key.update_client_setings(client_settings)
    
    return key
コード例 #8
0
                    raise  #return None # TODO raise Exception?
                except ApiKeyNeedsRevalidation, e:
                    return get_RevalidationException_Response(request, e)
                except InvalidKey, e:
                    return get_InvalidKeyException_Response(request, e)

            # TODO: if DEBUG
            elif request.META["HTTP_AUTHORIZATION"].startswith('TEST '):
                from django.conf import settings
                if not settings.DEBUG:
                    return get_HawkMissing_Response(request,
                                                    "auth-saml")  #todo

                api_user_id = "test"

                api_user = get_access_key_model().objects.get(id=api_user_id)
                request.api_user = api_user
        else:
            if not (hasattr(request, 'user')
                    and request.user.is_authenticated()):
                if request.path.startswith("/api/"):
                    from django.conf import settings
                    if settings.DEBUG:
                        return None  # TODO: fix
                    else:
                        return get_HawkMissing_Response(request)
        return None

    def process_response(self, request, response):
        if response.status_code == 500:
            return response
コード例 #9
0
                 raise#return None # TODO raise Exception?
             except ApiKeyNeedsRevalidation, e:
                 return get_RevalidationException_Response(request, e)
             except InvalidKey, e:
                 return get_InvalidKeyException_Response(request, e)
         
         # TODO: if DEBUG
         elif request.META["HTTP_AUTHORIZATION"].startswith('TEST '):
             from django.conf import settings
             if not settings.DEBUG:
                 return get_HawkMissing_Response(request, "auth-saml")#todo
             
             api_user_id = "test"
             
             api_user    =   get_access_key_model().objects.get(
                     id = api_user_id
                     )
             request.api_user = api_user
     else:
         if not (hasattr(request, 'user') and request.user.is_authenticated()):
             if request.path.startswith("/api/"):
                 from django.conf import settings
                 if settings.DEBUG:
                     return None # TODO: fix
                 else:
                     return get_HawkMissing_Response(request)
     return None
 
 def process_response(self, request, response):
     if response.status_code == 500:
         return response