OAuth2 の Refresh Token について少し混乱しています。アクセストークンは、ハッカーがユーザー資格情報を使用できる1時間の時間枠を制限し、リフレッシュトークンは、アクセストークンを再作成するために使用できる長寿命のトークンであると言います。
誰かがクッキーからアクセストークンを盗んだ場合、彼はリフレッシュトークンも盗み、リフレッシュトークンを使用して新しいアクセストークンを作成できます.JQuery(クライアント側)にajaxリクエストがあるためです。
注:サーバー側で更新トークンを送信する ajax リクエストを作成しました。そこにクライアント ID とシークレットを許可タイプの更新トークンとともに追加します。
アクセス トークンとリフレッシュ トークンの両方を Cookie に保存し、次の ajax リクエストを使用して新しいアクセス トークンを取得します。
jQuery(document).ajaxError(function(event, jqXHR, ajaxSettings, thrownError) {
//console.log('event');console.log(event);
//console.log('jqXHR');console.log(jqXHR);
//console.log('ajaxSettings');console.log(ajaxSettings);
//console.log('thrownError');console.log(thrownError);
if(jqXHR.status == 403)
{
console.log('User is not Loged in Redictet to Login Page');
}
if(jqXHR.status == 401)
{
var refresh_token = Cookies.get('refresh_token');
if(refresh_token != undefined)
{
$.ajax({
url: CONNECT_API_URL+'/refresh-token',
type: "POST",
data:{ refresh_token: refresh_token },
success: function(response, status, jqXHR){
if(response.access_token != undefined)
{
var expires_in = new Date(new Date().getTime() + response.expires_in * 1000);
var access_token = response.token_type+' '+response.access_token;
Cookies.set('access_token', access_token, { expires: expires_in });
Cookies.set('refresh_token', response.refresh_token, { expires: 14 });
$.ajax(ajaxSettings); // Re send same ajax request with access token in cookie has been set
}
else
{
console.log('Redirect to login page.');
}
},
});
}
}
});
更新トークンを使用してセキュリティを強化するにはどうすればよいですか?