web-dev-qa-db-ja.com

更新トークンを保存する方法は?

アプリケーションに認証機能を追加しようとしています。認証サーバーはoauth 2.を実装します

refresh_tokenを保存する方法がわかりません。ファイルに保存したいので、次回アプリケーションが起動し、refresh_tokenが利用可能になったときに、新しいaccess_tokenを要求できます。ユーザーは再度ログインする必要はありません。

しかし、これは私には安全に聞こえません。refresh_tokenを含む私のファイルを別のコンピューターにコピーすると、彼が私のアカウントにハッキングする可能性があるためです。

28
Bill Yan

あなたはあなたが説明する攻撃に正解です。更新トークンは、意図したとおりに使用するために安全に保管する必要があります。私が理解しているように、あなたはスタンドアロンアプリケーションを構築しています。したがって、ファイルシステムのセキュリティを利用して、承認されていないユーザーによって更新トークンがコピーされるのを防ぐことができます。更新トークンにも暗号化を使用することもできますが、キーはローカルマシンでのユーザーのセッションにバインドする必要があります(そうでない場合、ユーザーはアプリケーションの「サインイン」プロセス中に提供する必要があります。リフレッシュトークンを復号化します)。

OAuth WGからスレッドを読むことを検討してください。これは、説明されているものと同様の問題について説明し、いくつかのガイダンスを提供します: https://www.ietf.org/mail-archive/web /oauth/current/msg02292.html

12
mmachulak

更新トークンを使用してアクセスを取得します(このプロセスにはHTTP基本認証が必要です)。したがって、ユーザーが(id、secret)の組み合わせを持っている場合を除き、ユーザーはそれについてあまり実行できません。ただし、更新トークンの保存は非常に真剣に検討する必要があります。

これが私の2セントです。

  1. トークンをDBに保存する

  2. リフレッシュトークンを使用してアクセストークンを取得する場合は、必ずリフレッシュトークンもリセットしてください。 (Oauth2.0にはこの機能があり、リフレッシュトークンも変更しないようにすることができますが、DBの変更と更新を維持することはセキュリティの観点からは賢明です)

これがいくつかの洞察を与えることを願っています!!

8
Sudip Bhandari