モバイル デバイス向けの認証機能を備えた REST サービスを作成したいと考えています。このようなことをするのは初めてなので、どのように実装すればよいかアドバイスをいただければと思います。
このためには、ユーザーがサービスにサインアップできるサインアップ フォームを作成する必要があります。ここでは問題はありません。フォームデータをサーバーに投稿して、応答を返すことができます。
フォームが有効な場合、新しいユーザー オブジェクトが作成され、すぐにログインされます。また、以下を使用して API キーが生成されます。
from django.contrib.auth.models import User
from django.db import models
from tastypie.models import create_api_key
models.signals.post_save.connect(create_api_key, sender=User)
リクエストは 301 HTTP ステータスを返し、API キーを取得するためのリダイレクト URI を含みます。
このステップの後、アプリは別の URI (サインアップ要求の 301 応答で受信した URI) を要求して、API KEY にアクセスします (Tastypie のApiKeyAuthenticationスキームを使用します)。リクエストには、前のリクエスト応答で受信したセッション Cookie が含まれます。この方法での表示は保護され、login_required デコレータを使用できるようになります。応答は、ユーザー名と API キーを含むプレーンな JSON になります。
これらの値はアプリのどこかに保存されます。
これでリクエストが行われると、アプリに保存されているユーザー名と API KEY が追加されるため、以降のリクエストはより安全になります。
これは従うべき良いスキームのように見えますか? デザインに穴はありませんか?