2017-03-22 11 views
0

AspNetCore.Authentication.JwtBearer中とリフレッシュ私はJwtBearerAuthentication実装しました2015年 Visual Studioでaspnetcoreを使用していますし、私は正常に認証トークンを使用しています。ユーザーはログインしてトークンを取得します。JwtBearerAuthenticationトークン

私のトークンには有効期限があります。有効期限が切れた後、ユーザーは検証できなくなります。私は、期限切れの数分前にクライアントでユーザのトークンを静かにリフレッシュできるようにしたい。このセットアップではどうすれば実現できますか?それは可能ですMicrosoft.AspNetCore.Authentication.JwtBearer

+0

私はあなたがこの中で、(MVC /ビューとは対照的に)WEBAPIを使用していると仮定あなたのミドルウェアはhttpコード401 Unauthorizedを返します。あなたのクライアント(そのAPIの消費者)はこれに反応して、ユーザーをリフレッシュ/認証して新しいトークンを取得してから、以前の要求を繰り返す必要があります。これはJwtBearerミドルウェアとは関係ありません。 – Tseng

+0

ok ...新しいトークンを取得するためにどこから呼び出されるのですか?最初のトークンはユーザー名とパスワードで取得されます – user5328504

+2

これまでに得たトークンです。 ASP.NET Core IdentityはJWTトークンを発行できないため、それには別のミドルウェア/ライブラリ(ASOS/OpenIddictまたはIdentityServer4)が必要です。また、GoogleやFacebookなどのサードパーティのOpenID/Oauthプロバイダを使用する必要があります。トークンを取得した場合は、トークンをリフレッシュしてください。しかし、あなたの質問に必要な情報がないので、どこからJWTを入手したか分かりません) – Tseng

答えて

0

はい、可能です。リフレッシュトークン(たとえばランダムな文字列)を作成し、秘密トークンよりも有効期限を長く設定することができます。このトークンをクライアントに送信し、クライアントに保存します。メイントークンの有効期限が切れるたびに、ユーザーにログインページを送信したり、新しいトークンを作成したりする代わりに、リフレッシュトークンをサーバーに送信して確認することができます( )。 それがまだ満了していない場合、あなたは新しいトークンを作成し、トークンリフレッシュし、ユーザーへのアクセス権を設定し、あなたのヘッダーが含まれている必要があります

This site says... 
{ 
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJlUzl1NiJ9.eyJ1bmlxdWVfbmFtZ...", 
    "token_type": "bearer", 
    "expires_in": 119, 
    "refresh_token": "9b091854a9d3415c8ae12f07c333e5...", 
}