← l-artikli kollha

.NET

X'Tgħallimt Nimplimenta Awtentikazzjoni JWT f'.NET

L-iskadenza tal-access token hija faċli biex tittratta. Ir-refresh token jiskadi kwietament, mingħajr mogħdija ta' falliment espliċitu, huwa dak li verament ikkawża logouts konfużi sakemm tajtu waħda.

X'Tgħallimt Nimplimenta Awtentikazzjoni JWT f'.NET

L-access tokens jiskadu huma l-parti faċli biex tittratta. Il-klijent tiegħi jaqbad 401, isejjaħ l-endpoint tar-refresh, jikseb access token ġdid, u jimxi 'l quddiem. Il-parti li verament taqbadni hija r-refresh token innifsu jiskadi, kwietament, mingħajr xejn jgħid lill-klijent li ġara sakemm jipprova jużah u jfalli.

Fejn dan verament jinkiser

L-access token għandu ħajja qasira deliberatament, għalhekk bnejt il-fluss tar-refresh madwar dan mill-bidu. Dak li ma bnejtx madwaru fil-bidu kien ir-refresh token ukoll ikollu l-iskadenza tiegħu stess, itwal. Meta dik tispiċċa, is-sejħa tar-refresh innifisha tfalli, u jekk qed nittratta biss il-falliment tal-access token, dak it-tieni falliment m'għandu mkien fejn imur. L-utent sempliċiment jiġi logged out mingħajr raġuni ċara għaliex, f'nofs kull ma kien qed jagħmel.

X'qed nibdel

L-endpoint tar-refresh jeħtieġ il-mogħdija espliċita tiegħu stess ta' falliment, separata minn 401 normali fuq talba regolari. Jekk ir-refresh token huwa skadut jew invalidu, dak irid jindirizza xi mkien speċifiku, lura lejn skrin ta' login b'messaġġ attwali, mhux sempliċiment żball ġeneriku ta' awtentikazzjoni li jidher identiku għal kwalunkwe talba oħra falluta.

public async Task<IActionResult> Refresh(RefreshRequest request)
{
    var storedToken = await _tokenStore.FindAsync(request.RefreshToken);

    if (storedToken is null || storedToken.ExpiresAt < DateTimeOffset.UtcNow)
    {
        return Unauthorized(new { reason = "refresh_token_expired" });
    }

    var newAccessToken = _tokenService.CreateAccessToken(storedToken.UserId);
    return Ok(new { accessToken = newAccessToken });
}

Dak il-qasam reason huwa l-biċċa li kont nieqes minnha. Mingħajru, il-klijent m'għandu ebda mod biex jgħid "l-access token tiegħek skada, ipprova tirrifreska" apparti "ir-refresh token tiegħek huwa mejjet, erġa' agħmel login." It-tnejn jiġu lura bħala l-istess falliment ġeneriku mingħajr dan.

X'verament baqa' minn dan

L-iskadenza tat-token hija verament żewġ avvenimenti separati fuq żewġ timers differenti, u waħda biss minnhom għandha mogħdija ovvja ta' rkupru mibnija fil-fluss normali. L-oħra teħtieġ tiġi ttrattata deliberatament, jew sempliċiment tidher bħala logout kwiet u konfuż mingħajr kawża ċara.