web-dev-qa-db-ja.com

OAuth更新トークンのベストプラクティス

プロジェクトにOAuthを実装しています。更新トークンを処理するための最良の方法を知りたいです。

私が呼び出すAPIは、access_token、expires_in、およびrefresh_tokenを含むJSONオブジェクトを返します。だから私は疑問に思っていました:

  1. Access_tokenが期限切れになる時間を計算し、それをデータベースに保存します。 API呼び出しを行うたびにaccess_tokenの有効期限が切れていないことを確認します。有効期限が切れている場合は、refresh_tokenを使用して新しいaccess_tokenを取得します。

    (追加の質問:トークンの有効期限を計算する時間が正確であることを確認する方法を教えてください。expire_inの値は、APIサーバーがキーを生成したときから始まり、受け取ったときからではないためです。)

OR

  1. 毎回access_tokenを使用してAPI呼び出しを試行し、それがエラーで戻る場合は、refresh_tokenを使用してください。

また、これを実装する他のオプションも用意しています。

18
Angel Gao

クライアントは、access_token検証が失敗したことを示すAPIから返されたエラーを処理する準備を常に整えておく必要があります。実装によっては、アクセストークンが取り消されているか、無効であると宣言されている場合があります。

その後、クライアントはrefresh_tokenを使用して新しいアクセストークンを取得し、再試行できます。したがって、1を実装することを選択できますが、2を実装することから解放されるわけではないため、2のみを実装することに固執し、必要なコードの量を最小限に抑えることを選択できます。

もちろん、エラーの発生を可能な限り防止したい場合は、1。を実装して、呼び出し数を最適化し、プロセス全体のエラー数を減らすことができます。

8
Hans Z.

この記事では、いくつかの大きなクラウドサービスの実践について説明します。 http://blog.cloud-elements.com/oauth-2-0-access-refresh-token-guide

ただし、IMO、更新トークンには有効期限(たとえば1年)が必要です。更新トークンを使用して新しいアクセストークンが発行されたときに変更される必要がありますが、有効期限は同じままです。更新トークンが永久に必要な場合は、最大日付値を指定して更新トークンを発行するだけです。また、新しい更新トークンを発行するときに、古いアクセストークンと更新トークンを削除済みとしてマークしてください。

7
MN_WA