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
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)
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)
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
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
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
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
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