0

私は基本認証をDjango(with でMongo DB) に実装しましたが、その初心者です。iOS および Android アプリケーションで作成した Web サービスを使用しようとしています。現在、バックエンドは Postman (REST クライアント) で目的の応答を返しますが、iOS アプリ (認証チャレンジを通じて基本的なDjango認証要求を処理し、舞台裏で動作します) では返しません。DjangoiOS側に焦点を当てています)。iOS では、サービスは401 Unauthorizedステータスと空の応答を返します。また、認証チャレンジ (OS によって自動的に呼び出される) は受信されません。同様に動作するサードパーティのネットワーク ライブラリも試してみました。これはすべて、何か問題があると私に信じさせますDjango実装。では、特定の Web サービス ( だけでなく を使用して構築されDjangoたもの) が基本認証プロトコルに従って機能するかどうかを確認するにはどうすればよいでしょうか? ヒントとコツをください。

認証コードは次のとおりです。

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

1 に答える 1