2016-04-14 19 views
3

私は現在、Django RESTフレームワークを利用した大規模なDjangoプロジェクトを持っています。Djangoの認証バックエンドとしてDjango RESTフレームワークを使用

私は、データベースを直接共有しないで、APIを介して必要なデータを取得するメインのビルドから構築したいと考えているもう少し小さいDjangoプロジェクトを持っています。

小さいプロジェクトの場合はAUTHENTICATION_BACKENDを上書きし、認証者として大きい方のAPI認証エンドポイントを使用するようにします。

次のように基本的にプロセスが行くだろう:

  1. ユーザーは大ジャンゴ-DRFプロジェクトで、ユーザーの資格情報を使用して、小さなDjangoプロジェクトにログインしようとします。
  2. 小さなDjangoプロジェクトは、大きなDjango-DRFプロジェクトにAPIログイン要求を送信します。
  3. 大きなDjango-DRFプロジェクトは、APIトークンとシリアル化されたユーザー情報を返します。
  4. 小さなDjangoプロジェクトは、大規模なDjango-DRFプロジェクトの応答の情報をデータベースに自動的に追加/更新します。
  5. Small Djangoプロジェクトはトークンを使用してユーザークライアントに応答し、Small DjangoプロジェクトのページからのAJAXリクエストを大規模なDjango-DRFプロジェクトのエンドポイントに直接送信することができます。

このユースケースで活用する価値のある既存のプラグインがありますか、自分でAUTHENTICATION_BACKENDを書くべきですか?

+0

OAuth2のようなサウンド。 –

+0

DRFアプリケーションがOauth2またはいくつかの標準的な認証方式に準拠している場合は、バックエンドを簡単に見つけることができます。そうでない場合は、あなた自身の書き方が良いかもしれません。それは難しいことではありません。 –

答えて

2

django-rest-framework-jwtを調べるとよいかもしれません。これにより、認証メカニズムとしてJWTを使用できるようになり、簡単にケースを処理できます。このプロジェクトは実際にあなたが望むもののためのエンドポイントを提供します、verify_jwt_tokendocumentation

一部のマイクロサービスアーキテクチャでは、認証は単一のサービスによって処理されます。他のサービスは、ユーザーがこの認証サービスにログインしていることを確認する責任を委任します。これは通常、サービスがユーザーから受信したJWTを認証サービスに渡し、保護されたリソースをユーザーに返す前にJWTが有効であるという確認を待つことを意味します。

だからあなたのワークフローは次のようなものになるだろう:あなたの大きなAPI

  • ユーザーが戻って認証要求からJWT
  • ユーザーへの各要求とともにJWTを送信受信に

    1. ユーザー認証より小さいAPI
    2. 小さいAPIは、JWTを受け取ると、それを大きなAPIのverify_jwt_tokenエンドポイントに転送します。
  • 関連する問題