2016-08-11 12 views
1

JSON Webトークン(JWT)アプローチを使用する認証システムを実装しようとしています。私はオンラインで複数のアプローチを取った読んでいるが、私はいつも使っているものとは少し違うようだ。JSON Webトークンの実装:アクセスとリフレッシュトークン

私が考えていたアプローチは次のとおりです。

  • サーバはリフレッシュトークンとアクセストークンを作成させ、ユーザーがログイン。 (リフレッシュトークンはIDと有効期限で構成され、アクセストークンはリフレッシュトークンIDを含む15分間有効なJWTです)

  • 有効期限が切れるまでアクセストークンを使用していくつかのリクエストを成功させることができます

  • ユーザーは有効期限が切れたトークンで要求をしたら、サーバーをチェックしたリフレッシュトークンIDであれば、期限切れのアクセストークンは、それが一致した場合、リフレッシュトークンIDを変更

  • 現在のリフレッシュトークンと一致する内に含まれ、新しいリフレッシュトークンIDを含む新しいアクセストークンを作成する

  • それが一致しない場合、私はこのアプローチは次のような利点を持っていると信じている認証

を尋ねる:

  • それはリフレッシュトークンに対処するためにクライアントを必要としません。直接

  • DBまたはキャッシュ要求は、リフレッシュトークンをチェックするために15分ごとに1回だけ実行する必要があります。

  • アプリケーションは、DBまたはキャッシュからリフレッシュトークンを削除することにより、セッションを終了できます。

  • サーバーは、リフレッシュトークンに一致するアクセストークンを1つだけ作成します。アクセストークンが更新されると、もう一度それを使用しても、別の更新操作は発生しません。

誰でもコメントできますか?これは良いアプローチですか?

+0

リフレッシュトークンを使用して有効期限が切れる前に、私はあなたが疑問だと思う新しいアクセストークンを取得するために、より安全だと思う

は、あなたが何をすべきかをお勧めしますので、上のトピック – pedrofb

答えて

1

リフレッシュトークンの目的は、アプリケーションが再認証せずに新しいアクセストークンを取得して、盗まれたトークンの影響を最小限に抑えることです。トークン自体にリフレッシュIDを含めて自動的に更新することを許可している場合、リフレッシュトークンを故意に必要とせずにトークンの有効期間を実際に延長しています。

JWTをストールする攻撃者は、新しいアクセスとIDが一致しません。私はそれが特異的

+0

のですか?両方のトークンを作成し、両方のトークンをユーザーに提供し、ユーザーが常にアクセス権を使用し、有効期限が切れたらトークンを更新するように要求しますか? – ShEsKo

+0

リフレッシュトークンを提供し、必要に応じてアクセストークンを発行することができます。たとえば、ユーザーアクションの後にアクセストークンを発行し、ユーザーが非アクティブであるために有効期限が切れている場合は、更新トークンが必要です(必要に応じて資格情報が必要です)。https://auth0.com/blog/refresh-tokens-彼らはいつもどんなものなのでしょうか。また、一定期間後にアクセストークンを発行することもできます – pedrofb

関連する問題