https://<name>.auth.didit.meper a una aplicació en producció,https://<name>.sandbox.auth.didit.meper a una aplicació de sandbox,- o el teu domini personalitzat, quan estigui actiu.
DIDIT_AUTH_ISSUER amb el teu emissor, sense barra final, i DIDIT_APPLICATION_ID amb l’ID de la teva aplicació: els tokens el porten com a aud. La teva clau publicable codifica l’emissor: després de pk_live_ o pk_test_, és l’emissor en base64url sense farciment.
Quan el teu domini personalitzat estigui actiu, substituirà el host per defecte com a emissor. Els tokens nous l’indicaran a
iss, el document de descoberta apuntarà jwks_uri cap a ell i la teva clau publicable canviarà. Els tokens d’accés emesos amb el host per defecte fallaran a GET /session/ fins que es renovin. Actualitza DIDIT_AUTH_ISSUER quan activis el domini, o accepta els dos emissors fins que caducin els tokens antics, en un termini de 5 minuts.Descoberta i claus
L’emissor admet:
- Tipus de resposta
codei mode de respostaquery. - Tipus de concessió
authorization_codeirefresh_token. - Mètode PKCE només
S256. Els clients són públics: no hi ha secret de client, iclient_idés l’ID de la teva aplicació. - Algorisme de signatura
ES256(claus P-256). - Scopes
openid,email,phone,profileioffline_access.
prompt=none no és compatible. Fes servir GET /session/ per llegir i comprovar una sessió.
Memòria cau i rotació
Tots dos documents responen ambCache-Control: public, max-age=300, de manera que tu i les memòries cau compartides els podeu guardar durant 5 minuts. Permeten 1.200 sol·licituds per minut i 12.000 per hora per adreça, molt per sobre dels límits dels endpoints d’inici de sessió, perquè moltes instàncies de backend sovint comparteixen una mateixa adreça.
- Cada clau té un
kid; els ID de clau nous comencen perk_. Cada token indica la seva clau a la capçalerakid. - Les claus roten cada 30 dies. Didit publica la clau següent un dia abans que comenci a signar, i manté la clau anterior publicada durant un dia després que deixi de signar. Un JWKS guardat a la memòria cau durant 5 minuts, per tant, continua verificant durant una rotació.
- Guarda les claus a la memòria cau per
kid. Quan un token indiqui unkidque no tens, torna a obtenir el JWKS, com a màxim una vegada per minut, i rebutja el token si la clau continua sense aparèixer. - Quan Didit revoca una clau compromesa, l’elimina del JWKS immediatament, i
GET /session/rebutja tots els tokens que la clau va signar. Una clau de substitució comença a signar de seguida, sense el dia d’antelació de publicació. Un JWKS guardat a la memòria cau fins a 5 minuts abans encara accepta la clau revocada i encara no coneix la substitució, de manera que els tokens nous poden fallar la verificació sense connexió fins que la memòria cau es refresqui.
Inicia la sessió
Obre la pàgina allotjada, que és elauthorization_endpoint:
Les guies ràpides construeixen aquesta sol·licitud per a tu.
Intercanvia el codi
El callback repcode i state. Comprova state i, després, intercanvia el codi en un termini de 60 segons. Cada codi funciona una sola vegada. El cos pot ser JSON o codificat en format de formulari.
expires_in indica els segons que li queden al token d’accés. Quan desactives les múltiples sessions, aquest intercanvi tanca les altres sessions de la persona.
Claims del token d’accés
El token d’accés és un JWT amb la capçaleraalg: ES256 i typ: at+jwt. Dura com a màxim 5 minuts, i mai més que la seva sessió.
El token d’ID té la capçalera
typ: JWT. Porta les mateixes reclamacions excepte client_id, a més de auth_time i email_verified, i email, name i phone_number quan tenen un valor. Només el token d’ID de l’intercanvi del codi porta nonce, quan l’inici de sessió en tenia un: comprova-ho aquí, perquè els tokens d’ID de les renovacions mai no el porten. Un token d’ID mai s’accepta com a token d’accés.
Verifica un token al teu servidor
Comprova tot això abans de confiar en una reclamació:algésES256itypésat+jwt. Rebutja qualsevol altre algorisme, inclòsnone.- El
kidés al JWKS de la teva aplicació, i la signatura es verifica. issés igual al teu emissor configurat, iaudés igual a l’ID de la teva aplicació.expiiatsón vàlids, amb una tolerància de fins a 60 segons de diferència de rellotge, isub,sidijtihi són.actésnull. El token d’accés d’un agent d’IA es signa amb la mateixa clau i porta el mateixtyp,issiaud; nomésactel distingeix. Rebutja’l, tret que l’endpoint accepti agents: en aquest cas, permet només el que concedeixact.scopes.GET /session/rebutja sempre el token d’un agent.
GET /session/.
Comprova la sessió
sub, sid, application_id, vendor_data, amr, mfa_verified, email, email_verified, phone, verified_identity, verified, expires_at, post_logout_redirect_uri i organizations. Cada entrada d’organització té organization_id, organization__name, role i custom_role.
Aquesta comprovació és més estricta que la verificació fora de línia. També falla quan la sessió s’ha revocat, ha quedat inactiva o ha superat la seva durada, quan la persona ha estat bloquejada o el seu correu electrònic ja no està verificat, quan la sessió ja no compleix la teva política de MFA (per exemple, després que la persona hagi afegit una aplicació d’autenticació o s’hagi convertit en administradora d’una organització), o quan el token s’ha substituït en una renovació. Un error retorna 401 {"detail": "invalid_token"} amb WWW-Authenticate: Bearer.
GET /session/ permet 30 sol·licituds per minut i 300 per hora per adreça IP, un límit que comparteix amb DELETE /session/. Verifica els tokens fora de línia en cada sol·licitud, i reserva aquesta crida per als moments que ho necessiten. Cada crida satisfactòria compta com a activitat, de manera que reinicia el idle_timeout de la sessió.
Un correu electrònic verificat no és una verificació d’identitat. Llegeix verified per saber-ho: aquí és null quan no n’hi ha cap, mentre que els tokens porten {}.
Tokens de renovació
- El token de renovació és una cadena aleatòria, vàlida fins que acaba la sessió.
- La reutilització acaba la sessió. Quan arriba de nou un token de renovació ja utilitzat, Didit ho considera un senyal de robatori: revoca la sessió i retorna
400 {"error": "invalid_grant"}. Els tokens de la sessió també deixen de funcionar, inclosos els de la renovació anterior: el seu token de renovació falla i el seu token d’accés fa fallarGET /session/de seguida, tot i que encara es verifica fora de línia fins que caduca, en un termini de 5 minuts. - Fes una sola renovació alhora per a una sessió, a través de pestanyes, dispositius i instàncies del servidor, i substitueix els tres tokens junts.
- Si una renovació falla amb
400o no obté resposta, torna a iniciar la sessió. No ho reintentis a cegues: un reintent després d’una renovació que sí que ha funcionat és una reutilització. - Un
503 {"error": "temporarily_unavailable"}vol dir que la renovació no s’ha produït i que el teu token de renovació encara funciona. Reintenta-la amb una espera progressiva. - Didit respon amb un
429abans d’executar la renovació, així que reintenta-la després deRetry-After. L’endpoint de tokens permet 30 sol·licituds per minut i 300 per hora per adreça IP. A més, cadaPOSTiDELETEde la teva aplicació comparteix els límits de protecció contra bots: 60 sol·licituds per minut per adreça IP entre aquests endpoints i 30 per minut per dispositiu. Per a tota l’aplicació, les renovacions tenen un límit de 6.000 per minut i cada altrePOSTiDELETE(inclosos els navegadors i els passos d’inici de sessió) en té un de 3.000 per minut, de manera que les renovacions mai no esgoten els teus inicis de sessió. - Amb tokens d’accés de 5 minuts, 300 renovacions per hora cobreixen unes 25 persones que es mantenen actives. Si el teu servidor renova els tokens de molts usuaris des d’una mateixa adreça, renova només quan una sol·licitud necessiti un token nou, i fes-ho al navegador o a l’aplicació on sigui possible.
Tancar la sessió
DELETE /session/ amb el token d’accés actual de la persona finalitza la sessió i retorna 204. El seu token d’actualització deixa de funcionar, i els seus tokens d’accés fallen en les sol·licituds a GET /session/ de seguida; els tokens que verifiquis fora de línia continuen vàlids fins que caduquin. Després, envia la persona a la teva post_logout_redirect_uri, si n’has definit una.
Per tancar la sessió cal un token d’accés que GET /session/ acceptaria: un que no hagi caducat i que no s’hagi substituït per un token d’actualització. Un 401 vol dir que la sessió no s’ha tancat. Renova el token i després tanca la sessió amb el nou token d’accés; si la renovació falla amb 400, la sessió ja no es pot utilitzar.
Una sessió també finalitza quan:
- supera
session_lifetime(per defecte, 30 dies) oidle_timeout(per defecte, 1 dia), - la persona torna a iniciar sessió mentre les sessions múltiples estan desactivades,
- la persona restableix la contrasenya mentre
revoke_on_password_changeestà activat, - el teu equip la revoca o bloqueja la persona a la consola,
- es torna a enviar un token d’actualització que ja s’havia utilitzat.
Durades
Emmagatzemar les credencials segons la finalitat
- Guarda les claus d’API de verificació i els tokens de la consola al teu servidor.
- Mantín els tokens d’accés del navegador a la memòria sempre que sigui possible. Per a aplicacions renderitzades al servidor, fes servir cookies segures HttpOnly i protegeix les sol·licituds autenticades amb cookies contra CSRF.
- Emmagatzema els tokens d’actualització de les aplicacions mòbils en un emmagatzematge protegit per la plataforma. Esborra l’estat local després de tancar la sessió.
- No hi posis mai tokens a les URL ni als registres.