2017-01-30 27 views
0

私はACCESS_TOKENを使用してdjangoにレストAPIを確保する予定です。 ユーザがユーザ名とパスワードを使用してログインすると、認証されるとACCESS_TOKENが生成され、Webサイトまたはネイティブアプリケーションのフロントエンドに渡されます。 ACCESS_TOKENをその後の通信に使用しました。 私はこのトークンをいくつかのユーザーデータに基づいて生成し、公開鍵でこれを暗号化しています。後でアプリケーションが任意の要求でこれを送信すると、私はACCESS_TOKENを秘密鍵で復号し、ユーザーデータデータを抽出して要求を処理します。これは、セッションデータがACCESS_TOKENでは暗号化された形式であり、秘密鍵のみでACCESS_TOKENを復号化するセッションと同様のものです。これは私がやろうとしていることです。 以下の質問にお答えください。 - 1. REST APIを保護する最善の方法はありますか? Webアプリケーション(AJAX呼び出し)とNATIVEアプリケーション(Android/IOSなど)から同じ方法でAPIを使いたいですか? 2.トークンを有効期限切れにする最善の方法は何ですか?アクセストークンを期限切れにするために、最後にアクセストークンを追跡する必要がありますか?APIのエンコードとデコード

また、私はAPIでOauthを使用したいと思います。

+0

なぜトークンにすべてのデータが含まれる必要がありますか?その独自の値であれば、データベースを介してサーバー上であなたが好きな情報に調整することができます。この方法では、クライアントからサーバーへのデータはまったくありません。 –

+0

トークンがJWTのように動作するようにしたいが、私のデータが秘密鍵以外の方法で復号可能でないようにしたい –

答えて

0

私が見るほとんどの人は署名されていますが暗号化されていないJWTを使用しているため、user_idやsession_idのような非PIデータを格納しています。個人情報を保存する必要がある場合は暗号化できると思いますが、他の理由はありません。 HTTPSを使用していると仮定すると、エンドクライアントだけが情報にアクセスできます。秘密が漏れた場合に問題を尋ねるように聞こえるので、あなたは本当に良いキーローテーションスキームが必要になります。

JWTを使用する多くの人は、集中認証サーバーを必要としないため、JWTを使用するユーザーが多いため、トークンは数時間または数日のように短命です。期限切れのトークンを本当に厳密に制御する必要がある場合は、JTIのブラックリスト(JWT Id)がチェックされるK/Vに格納されるブラックリストアプローチをとることができます。 https://www.moesif.com/blog/technical/restful-apis/Authorization-on-RESTful-APIs/

関連する問題