web-dev-qa-db-ja.com

リフレッシュトークンを明示的に送信して新しいアクセストークンを取得する必要があります-JWT

私のアプリケーションでは、ユーザーが正常にログインすると、アクセストークンと更新トークンを返します。アクセストークンとリフレッシュトークンの有効期限は、それぞれ10分と40分に設定されています。 (これらの値についてさらに調査する必要があります。これはテストのためだけです)

次の記事で説明する実装を使用しました

http://www.svlada.com/jwt-token-authentication-with-spring-boot/

ログインの10分後にサーバーへの要求を呼び出したとします。アクセストークンの有効期限が切れているため、401エラー応答が返されます。

ただし、初心者として、新しいアクセストークンを取得するためにリフレッシュトークンを明示的に送信する必要があるかどうかを理解することは困難です。私がそうする必要がある場合、それを行う方法は?何としてリフレッシュトークンを送信する必要がありますか?ヘッダー?

または、アクセストークンの有効期限が切れたためにサーバーによって要求が拒否された場合、新しいアクセストークンを取得するために、更新トークン自体がサーバーに要求を自動的に送信する必要がありますか?

ネット上で見つけたリソースから、更新トークンの動作の性質を理解するのは難しいと感じました。これらの質問について私に教えてください。

14
vigamage

はい、更新トークンは新しいアクセストークンを取得するために使用されます。

初めてアクセストークンをリクエストする場合、通常、リクエストヘッダーにユーザー資格情報があるResource Owner Password Credentials Grantと呼ばれる場合、トークンエンドポイントにトークンリクエストを送信することから始めます。

grant_type=password&username=user1&passowrd=very_secret

アクセストークンの有効期限が切れたら、新しいアクセストークンを要求する必要があります。今回は、まだ有効な更新トークンを使用して、ユーザー資格情報を再度必要とせずに送信します

grant_type=refresh_token&refresh_token=<your refresh token>

代わりに。この方法では、クライアント側にユーザ​​ー資格情報を保存する必要がなく、ログイン手順でユーザーを再度煩わす必要がありません。有効期限がわかると、access_tokenの有効期限が切れる前にトークンを更新するメカニズムを実装することもできます。

さらに、トピックに関する詳細については、これを読むことができます: https://auth0.com/learn/refresh-tokens/

次のチュートリアルでは、郵便配達員で更新トークンを使用する方法のスクリーンショットもあります: http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp -net-web-api-2-owin / (ステップ6までスクロールダウン)一般的に、Taiseer Joudehのチュートリアル、特にC#の場合、ASP.NET uand Angularプログラマ。

11
jps