2013-05-07 68 views
0

我已在Django(使用Mongo DB)實施了基本認證,並且是一個新手。我正在嘗試使用iOS和Android應用程序中的一些Web服務。現在,Django後端在Postman(REST客戶端)中返回所需的響應,但不在iOS應用中(它通過身份驗證挑戰處理基本身份驗證請求,並在幕後工作),因此我希望確保Django實現是否正確(以便我將焦點轉移到iOS方面)。在iOS中,該服務返回一個401Unauthorized狀態和一個空的響應。此外,還沒有收到認證挑戰(由操作系統自動調用)。我也曾嘗試過類似的第三方網絡庫!所有這些讓我相信Django實現有什麼問題。那麼,如何驗證特定的Web服務(不僅是Django構建的)是否按照基本身份驗證協議工作?提示和技巧,請。如何測試url是否具有基本認證

下面是驗證碼:

import base64 
from tastypie.authentication import Authentication 
from .backend import CustomMongoEngineBackend 
class MongoBasicAuthentication(Authentication): 
""" 
Customizing basic authentication to make it compatible with mongo 
""" 

def is_authenticated(self, request, **kwargs): 
    """ 
    Checks a user's nasic auth credentials against the current Mongo Auth Backend. 
    """ 
    if not request.META.get('HTTP_AUTHORIZATION'): 
     return False 

    try: 
     (auth_type, data) = request.META.get('HTTP_AUTHORIZATION').split() 
     if auth_type.lower() != 'basic': 
      return False 
     user_pass = base64.b64decode(data) 
    except: 
     return False 

    bits = user_pass.split(':', 1) 

    if len(bits) != 2: 
     return False 

    backend = CustomMongoEngineBackend() 
    user = backend.authenticate(email=bits[0], password=bits[1]) 

    if user: 
     request.user = user 
    else: 
     return False 

    return True 

def get_identifier(self, request): 
    return request.META.get('REMOTE_USER', 'nouser') 

回答

0

如果你看到這個響應頭:

WWW-Authenticate: Basic realm="protected-area" 

然後基本身份驗證被啓用。

相關問題