2017-07-19 6 views
1

私は、APIを統合するために必要なプロジェクトに取り組んでいます。 APIのWebサイトでは、APIへのすべてのリクエストにAuthorizationトークンによる承認が必要です。 私の問題は、認証トークンを安全に保存し、有効期限が切れた後にトークンを再生成する方法です。これにより、自分のウェブサイトのユーザーが自分の要求にアクセストークンを使用できるようになります。 トークンは2時間以内に有効期限が切れます 以下は、私の認証トークンと応答の取得要求です。ウェブサイトAPIから認可トークンを取得する

response = unirest.post("https://webapisite.com/merchant/access", 
headers={ "Accept": "application/json" }, 
params={ "apiKey": "my_api_key, "secret": "my_secret" }); 

私はあなたがDBでこのトークンを保存する必要があり

{ 
    "status": "success", 
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTQwLCJuYW1lIjoic2F2YW5hIHNtYXJ0c2F2ZSIsImFjY291bnROdW1iZXIiOiIiLCJiYW5rQ29kZSI6Ijk5OSIsImlzQWN0aXZlIjp0cnVlLCJjcmVhdGVkQXQiOiIyMDE2LTEyLTA4VDEwOjM4OjE5LjAwMFoiLCJ1cGRhdGVkQXQiOiIyMDE3LTA2LTE0VDEzOjAxOjQ5LjAwMFoiLCJkZWxldGVkQXQiOm51bGwsImlhdCI6MTQ5ODMzNTE2NSwiZXhwIjoxNDk4MzQyMzY1fQ.WojvkYOC2j6XTUfg_E4WQkxQChPUyCgYUCIKaW83YXA", // a valid merchant token 
    "config":{} 
} 
+0

ここでの標準的なアプローチは、ユーザのセッションに、または有効期限とともにユーザアカウントにリンクされているテーブル内のデータベースにトークンを保存して、必要に応じて更新することです。 –

答えて

0

いつも保存する方が良いトークンDBまたセッションにも保存されています。 リクエストごとに、セッションからトークンを取得し、DBに保存されたセッションによってセッションアクティビティを追跡できます。 基本的には、この種のものはプロジェクトフローなので、プロジェクトの必要性やセキュリティの面での流れに応じて、我々はdecesionを取ることができます。

0

json応答の下に受信します。 1つのテーブルで、アクセストークン、認証トークン、有効期限を保存します。 必要に応じて複数のレコードを保存できますが、認証トークンが1つしかない場合は、1つのレコードで十分です。

そのAPIを呼び出すたびに、利用可能なアクセストークンがまだ有効かどうかをチェックインし、そうでない場合は、認証トークンを使用してアクセストークンを更新する必要があります。

このタスクにどの言語を使用しているのか理解できませんでした。 javascriptの場合、最新の有効なトークンを尋ねるバックエンド用の投稿を作成できます。

希望に役立ちます。

+0

ありがとう、 PHPを使用していて、unirestを使用してください。 –

+0

その後、新しいトークンを要求するのではなく、トークンが有効かどうかをPHPで__call()メソッドを使って確認してください。 トークンを更新するプロセスが終了すると、呼び出された関数が実行され、新しいトークンが新たに追加されます。 –

1

おそらく、このような使用例で最も一般的に使用される標準はOAuth 2.0です。

OAuthは、認証に成功した後にクライアントにトークンを発行するために使用される、HTTP上で広く認識されているプロトコルです(ServerFaultの "What is the difference between authentication and authorization?"も参照)。トークンを取得するために異なる「フロー」を提供します。あなたのケースに最も適したものはおそらく "Resource Owner Password Credentials Grant"のフローでしょう。クライアントは、与えられたトークンを使用して、実際のAPI要求を行うことができます。

トークンの格納は、通常、データベースで行われます。真にステートレスアプリケーションでは、JSON Web Tokensは、サーバー側にトークンを格納する必要性を排除できます。

関連する問題