Hafðu samband við okkur

info@serverion.com

Hringdu í okkur

+1 (302) 380 3902

Refresh Token Token Rotation: Bestu starfsvenjur fyrir hönnuði

Refresh Token Token Rotation: Bestu starfsvenjur fyrir hönnuði

Viltu gera appið þitt öruggara og halda notendum ánægðum? Refresh token snúningur getur hjálpað. Þetta er aðferð þar sem endurnýjunartáknum er skipt út eftir hverja notkun, sem tryggir að þeir séu aðeins gildir í eitt skipti. Þetta bætir öryggi, hindrar endurspilunarárásir og einfaldar lotustjórnun – allt án þess að trufla notendaupplifunina.

Af hverju að nota Refresh Token Rotation?

  • Sterkara öryggi: Takmarkar misnotkun tákna og veitir skýra athafnaskrá.
  • Betri stjórn: Stjórnaðu fundum nákvæmlega og afturkallaðu aðgang samstundis ef þörf krefur.
  • Slétt notendaupplifun: Langar lotur án tíðar innskráningar.

Hvernig það virkar:

  1. Þegar aðgangslykill rennur út er endurnýjunartáknið notað til að biðja um nýtt.
  2. Miðlarinn gefur út nýjan aðgangs- og endurnýjunartákn en ógildir gamla endurnýjunartáknið.
  3. Þetta skapar örugga keðju tákna, sem dregur úr áhættu eins og táknþjófnaði.

Lykilskref til að framkvæma:

  • Stilltu stuttan líftíma aðgangslykilsins (15–30 mínútur).
  • Notaðu einnota endurnýjunartákn (gildir í 7–14 daga).
  • Geymdu auðkenni á öruggan hátt (td smákökur eingöngu fyrir HTTP eða örugga geymslu á miðlara).
  • Fylgstu með grunsamlegri virkni eins og endurnotkun tákna eða óvenjulegum innskráningarmynstri.

Með því að nota snúning endurnýjunartákna styrkirðu öryggi appsins þíns á sama tíma og þú heldur auðkenningu óaðfinnanlegu fyrir notendur. Tilbúinn til að læra meira? Við skulum kafa inn!

Uppgötvun loturæningja með snúningsuppfærslutáknum

Hvernig Refresh Tokens virka

Þessi hluti útskýrir OAuth 2.0 táknferlið og hvernig snúningur endurnýjunartákna bætir öryggi.

OAuth 2.0 táknflæði

OAuth 2.0

OAuth 2.0 stjórnar endurnýjunartáknum í gegnum skilgreinda röð skrefa. Þegar notandi skráir sig inn gefur heimildarþjónninn tvo auðkenni: skammtíma aðgangslykil (gildir í 15–60 mínútur) og lengri endurnýjunartákn (varir í 7–14 daga).

Svona virkar ferlið:

1. Upphafleg auðkenning

Eftir árangursríka innskráningu gefur kerfið út:

  • Skammtímaaðgangstákn fyrir API símtöl.
  • Langtíma endurnýjunartákn til að biðja um nýja aðgangslykil.

2. Að nota aðgangslykil

Viðskiptavinurinn inniheldur aðgangslykilinn í heimildarhausnum fyrir hverja API beiðni, svona:

Heimild: Handhafi eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... 

3. Endurnýjar táknið

Þegar aðgangslykillinn rennur út notar viðskiptavinurinn endurnýjunartáknið til að biðja um nýjan án þess að krefjast þess að notandinn skrái sig inn aftur.

Næst skulum við skoða hvernig tákn snúningur eykur þetta ferli.

Tákn snúningsferli

Snúningur tákna styrkir öryggi með því að skipta um tákn eftir hverja endurnýjun, sem tryggir að endurnýjunartákn gildi aðeins í eina notkun. Svona virkar það:

  1. Viðskiptavinurinn tekur eftir að aðgangslykillinn er útrunninn.
  2. Það sendir núverandi endurnýjunartákn til endapunktsins.
  3. Miðlarinn staðfestir endurnýjunartáknið og gefur út nýjan aðgangs- og endurnýjunartákn.
  4. Gamla endurnýjunartáknið er ógilt.
  5. Miðlarinn sendir nýju táknin aftur til viðskiptavinarins.
  6. Viðskiptavinurinn uppfærir vistuð tákn sín.

Þessi „einu sinni notkun“ nálgun skapar örugga keðju tákna, sem dregur úr hættu á misnotkun.

Til að framfylgja einnota endurnýjunartáknum skaltu íhuga þessar athuganir:

Athugaðu Tilgangur Framkvæmd
Uppgötvun tákns um endurnotkun Koma í veg fyrir endurspilunarárásir Fylgstu með notuðum endurnýjunartáknum á svörtum lista
Náðartími Handfang keppnisaðstæður Leyfa 30 sekúndna glugga fyrir samhliða beiðnir
Fjölskylduvottun tákns Halda táknrænum ætterni Hafa tilvísanir til foreldratákna í nýjum táknum

Snúningur tákna virkar óaðfinnanlega í bakgrunni, eykur öryggi en heldur notendaupplifuninni sléttri. Með því að nota þessa aðferð tryggir þú öruggar, sjálfvirkar uppfærslur á skilríkjum án tíðra innskráningar notenda.

Setja upp snúning tákns

Grunnstillingarskref

Til að setja upp snúning tákna skaltu stilla heimildaþjóninn þinn með eftirfarandi breytum:

  • Stilltu endingartíma aðgangslykilsins á 15–30 mínútur.
  • Takmarkaðu gildi endurnýjunartákna við að hámarki 7–14 daga.
  • Virkjaðu staðfestingarathuganir á táknum til að tryggja öryggi.
  • Notaðu takmörkun á takmörkunum á táknendapunktum til að koma í veg fyrir misnotkun.

Miðlarinn þinn ætti að halda uppi táknaskrá með þessum nauðsynlegu sviðum:

Field Tilgangur Dæmi Gildi
Auðkenni tákns Einstakt auðkenni uuid-v4
Útgáfutími Tímastimpill um sköpun tákns 18/03/2025, 14:30 EST
Fjölskylduauðkenni Hópatengd tákn family-uuid-v4
Fyrri tákn Fylgir foreldrismerkinu fyrri-tákn-hash
Afturköllunarstaða Sýnir táknstöðu virkt/afturkallað

Þegar það hefur verið stillt skaltu halda áfram að innleiða snúning tákns í kóðanum þínum.

Forritunardæmi

Hér er dæmi um snúning tákns með því að nota Node.js:

const jwt = require('jsonwebtoken'); const crypto = require('crypto'); async function rotateTokens(refreshToken) { const decodedToken = jwt.verify(refreshToken, process.env.SECRET_KEY); // Búa til nýtt táknpar const newAccessToken = jwt.sign({ userId: decodedToken.userId }, process.env.SECRET_KEY, { expiresIn: '30m' } ); const newRefreshToken = jwt.sign({ userId: decodedToken.userId, familyId: decodedToken.familyId, previousToken: crypto.createHash('sha256') .update(refreshToken).digest('hex') }, process.env.SECRET_KEY, { expiresIn: '7d' } ); ... // Ógilda gamlan endurnýjunarlykil await invalidateToken(refreshToken); return { accessToken: newAccessToken, refreshToken: newRefreshToken }; } 

Bestu starfshættir fyrir geymslu auðkenna

Eftir að þú hefur innleitt snúning tákns skaltu tryggja að tákn séu geymd á öruggan hátt með því að fylgja þessum aðferðum:

  • Geymsla á netþjóni
    Notaðu öruggan, hraðvirkan gagnagrunn eins og Redis til að geyma táknlýsigögn. Innbyggður fyrningarstuðningur Redis er sérstaklega gagnlegur:
    await redis.setex(`token:${tokenId}`, 604800, // 7 dagar í sekúndum JSON.stringify(tokenMetadata)); 
  • Geymsla við viðskiptavini
    Fyrir vefforrit, geymdu endurnýjunartákn í smákökur eingöngu með HTTP með viðeigandi öryggisfánum:
    res.cookie('refreshToken', token, { httpOnly: true, secure: true, sameSite: 'strict', maxAge: 604800000 // 7 dagar í millisekúndum }); 
  • Farsímaforrit
    Notaðu vettvangssértæka örugga geymsluvalkosti:
    • iOS: Lyklakippuþjónusta
    • Android: EncryptedSharedPreferences
    • React Native: Dulkóðuð AsyncStorage

Forðastu þessar mistök þegar þú geymir tákn:

  • Geymdu aldrei tákn í staðbundin Geymsla, þar sem það er viðkvæmt fyrir XSS árásum.
  • Forðastu að fella viðkvæm gögn inn í JWT farminn.
  • Gakktu úr skugga um að öll geymd gögn séu dulkóðuð.
  • Hafðu aðgang og endurnýjaðu tákn á aðskildum geymslustöðum til að draga úr áhættu.

Öryggisráðstafanir

Koma í veg fyrir endurnotkun tákns

Til að stöðva endurspilunarárásir skaltu fylgjast með notkun tákna með miðstýrðu kerfi sem fylgist með breytingum á táknastöðu:

const tokenRegistry = { async markTokenUsed(tokenId, timestamp) { const token = await db.tokens.findOne({ id: tokenId }); if (token.used || token.revoked) { throw new SecurityError('Endurnotkun tákns greind'); } await db.tokens.update({ id: tokenId, used: true, lastUsedAt: timestamp }); } };     Takmörk eru ólæsileg og því ekki hægt að þýða. }  Takmörk eru ólæsileg og því ekki hægt að þýða. 

Ef endurnotkun tákns greinist, gríptu strax til aðgerða:

  • Afturkalla táknið til að koma í veg fyrir frekari misnotkun.
  • Skráðu atvikið í endurskoðunarskyni.
  • Þvingaðu fram endurstaðfestingu fyrir viðkomandi þing.
  • Látið stjórnendur vita til að rannsaka brotið.

Þessi skref eru viðbót við afturköllunaraðferðirnar sem lýst er hér að neðan.

Skref fyrir afturköllun tákna

Hægt er að beita afturköllun tákna á mismunandi stigum eftir aðstæðum:

Tegund afturköllunar Hvenær á að nota Áhrif
Einstakt tákn Grunsamleg virkni á einu tæki Aðeins tiltekið tákn hefur áhrif
Fjölskylduafturköllun Brot sem tekur til margra tækja Öll tengd tákn eru ógild
Alþjóðleg afturköllun Stórt öryggisatvik Öll virk tákn eru afturkölluð um allt kerfið

Hér er dæmi um afturköllun fjölskyldumerkja:

async function revokeTokenFamily(familiuauðkenni) { await db.tokens.updateMany( { familyId: familyId }, { revoked: true, revokedAt: new Date(), reason: 'öryggisbrot' } ); // Láta viðskiptavini vita await notifyClients(familiuauðkenni); // Skrá öryggisatburð await logSecurityEvent({ type: 'familiu_revocation', familyId: familyId, timestamp: new Date() }); }    *Skrá yfir óvirka kóða* ... 

Notkunarmörk og mælingar

Nauðsynlegt er að fylgjast með beiðnum um tákn til að koma auga á óvenjulega virkni. Notaðu hraðatakmarkanir og fylgstu með notkunarmynstri til að bera kennsl á hugsanlegar ógnir:

const rateLimits = { tokenRequests: { window: '15m', maxAttempts: 100, blockDuration: '1klst' }, refreshAttempts: { window: '24klst', maxAttempts: 1000, blockDuration: '24klst' } };   Beiðnir um tákn: { window: '15m', maxAttempts: 1000, blockDuration: '24klst' } };   Beiðnir um tákn: { window: '24klst ...Beiðnir um tákn: { window: '24klst', maxAttempts: 1000, blockDuration: '24klst' } };  Beiðnir um tákn: { window: '24klst', maxAttempts: 

Helstu mælikvarðar til að fylgjast með eru:

  • Tíðni endurnýjunar tákns á hvern notanda
  • Misheppnaðar tilraunir til að endurnýja tákn
  • Landfræðilegur uppruna beiðna
  • Tímabundin notkunarþróun
  • Fjöldi virkra lota samtímis

Settu upp viðvaranir fyrir grunsamlega hegðun, svo sem:

  • Margar endurnýjunartilraunir frá mismunandi IP-tölum
  • Hratt snúningur tákna
  • Aðgangur á óvenjulegum tímum
  • Beiðnir frá óvæntum stöðum

Geymdu táknnotkunargögn í tímaraðar gagnagrunni fyrir betri greiningu og ógnunargreiningu:

const metrics = { async recordTokenUsage(tokenId, context) { await timeseriesDB.insert({ timestamp: new Date(), tokenId: tokenId, userId: context.userId, ipAddress: context.ip, userAgent: context.userAgent, geoLocation: await geolocate(context.ip) }); } };   Bendilinn á að: } } } 

Þegar óreglur uppgötvast skaltu auka öryggið með því að:

  • Aukið eftirlitstímabil
  • Stytting fyrningartíma tákna
  • Bætir við auka staðfestingarskrefum
  • Að hefja handvirka endurskoðun fyrir dýpri rannsókn

Prófanir og viðhald

Prófunaraðferðir

Sjálfvirk próf eru nauðsynleg til að tryggja að snúningsferlið tákna virki eins og ætlað er. Hér er dæmi um hvernig á að prófa þessa virkni:

describe('Tækniviðmótsprófanir', () => { test('ætti að snúa og sannreyna tákn', async () => { // Prófa grunnsnúning const initialToken = await generateRefreshToken(); const rotatedToken = await rotateToken(initialToken); expect(snúiðTækni).not.toEqual(initialToken); expect(await validateToken(snúiðTækni)).toBeTruthy(); // Prófa fulla sannvottunarflæði const authResponse = await authentic(credentials); await simulateTokenExpiry(authResponse.accessToken); const newTokens = await performTokenRotation(authResponse.refreshToken); await verifyTokenLineage(authResponse.refreshToken, newTokens.refreshToken); }); }); }); 

Þegar þú hefur staðfest að snúningur tákna virkar eins og búist er við skaltu fylgjast með frammistöðu kerfisins til að bera kennsl á og leysa vandamál snemma.

Kerfiseftirlit

Fylgstu með frammistöðu snúnings tákns með því að nota lykilmælikvarða til að viðhalda áreiðanleika:

Mæling Lýsing Viðvörunarþröskuldur
Snúningsleynd Tími til að ljúka snúningi > 500 ms
Árangurshlutfall Vel heppnaðar snúningar < 99.9%
Lengd táknkeðju Snúningur í röð > 50 snúninga
Villutíðni Misheppnaðar tilraunir á klukkustund > 10 villur

Að auki, skráðu alla táknlífferilsviðburði til að fá betri rekjanleika:

const rotationLogger = { async logRotationEvent(atburður) { await logger.info('token_rotation', { timestamp: new Date().toISOString(), tokenId: atburður.tokenId, rotationDuration: atburður.duration, status: atburður.status, villukóði: atburður.villa || null }); } }; 

Villustjórnun

Jafnvel með ítarlegum prófunum og eftirliti geta villur enn átt sér stað. Notaðu sérstaka bataaðferðir til að takast á við þau á áhrifaríkan hátt:

const errorHandler = { async handleRotationError(villa, samhengi) { // Aðalvillumeðhöndlun með samþættum rofa if (this.failureCount >= 5) { await this.activateFailover(); return; } switch(villa.kóði) { case 'TOKEN_EXPIRED': await forceReauthentication(samhengi.userId); break; case 'DATABASE_ERROR': await this.retryWithBackoff(samhengi); break; default: await this.notifyAdministrator(villa); } await metrics.recordError(villa); }, async retryWithBackoff(samhengi, tilraunir = 0) { if (tilraunir > 3) return; await new Promise(resolve => setTimeout(resolve, Math.pow(2, tilraunir) * 1000)); return this.handleRotationError(samhengi, tilraunir + 1); } }; 

Þessi nálgun tryggir að villum sé stjórnað á skilvirkan hátt, sem lágmarkar truflanir á kerfinu.

Niðurstaða

Helstu veitingar

Refresh token snúningur tryggir jafnvægi á milli öryggi, frammistöðu, og upplifun notenda. Hér eru helstu starfsvenjur sem þarf að hafa í huga:

  • Fínstilltu afköst kerfisins með stöðugu eftirliti.
  • Innleiða seigur villumeðferð til að gera sléttan bata úr vandamálum.
  • Framkvæma strangar prófanir til að sannreyna og fínstilla snúningskerfið.

Skref-fyrir-skref leiðbeiningar um innleiðingu

Ef þú ert tilbúinn að innleiða snúning tákna, þá er hér sundurliðun á ferlinu:

  1. Upphafleg uppsetning
    Byrjaðu á því að byggja upp örugga tákngeymslu með því að nota iðnaðarstaðlaðar dulkóðunaraðferðir. Settu inn hraðatakmörkun og tryggðu að auðkenningarþjónninn þinn geti stækkað til að mæta eftirspurn.
  2. Öryggisstillingar
    Skilgreindu mikilvægar breytur eins og endingartíma tákns, snúningsglugga og takmörk. Til dæmis, hér er einföld uppsetning:
    const securityConfig = { tokenLifetime: 3600, // Tákn gild í 1 klukkustund snúningGluggi: 86400, // Endurnýja tákn gild í 24 klukkustundir maxRotations: 30, // Hámarksfjöldi táknsnúninga jwtAlgorithm: 'RS256', // Ósamhverfur dulkóðunarreiknirit tokenLength: 256 // Stærð tákns í bitum }; 
  3. Uppsetning eftirlits
    Settu upp viðmiðunarmörk fyrir afköst kerfisins og settu upp viðvaranir fyrir frávik. Vertu tilbúinn til að stækka innviði þína þegar mælikvarðar sýna aukna eftirspurn.
  4. Framleiðsludreifing
    Rúllaðu kerfið út smám saman og hafðu auga með mikilvægum mælingum. Halda ítarlegum skrám yfir snúningsatburði fyrir endurskoðun og bilanaleit. Fyrir stigstærða og áreiðanlega innviði skaltu íhuga hýsingarlausnir eins og Serverion (https://serverion.com), sem styður afkastamikið umhverfi.

Tengdar bloggfærslur

is_IS