Tecnologies
Oauth
OAuth és un protocol web d'autorització per concedir als llocs web l'accés a algunes de les vostres dades personals o drets d'accés a algun sistema.
L'objectiu és obtenir un token d'accés per a accedir a un recurs protegit. Hi ha quatre modalitats:
- Propietari del recurs (resource owner): l'usuari que autoritza una aplicació a accedir al seu compte.
- Client: l'aplicació que vol accedir al compte d'usuari.
- Servidor de recursos (resource server): conté els comptes d'usuari.
- Servidor d'autorització (authorization server): verifica la identitat i emet els tokens d'accés a l'aplicació.
Aquests dos servidors se solen anomenar "API del servei".
Hi ha dos conceptes relacionats amb OAuth:
- El registre de l'aplicació: abans d'utilitzar OAuth, cal que l'aplicació es registri al servei indicant el seu nom, l'adreça web i la redirecció URI, on el servei redireccionarà després d'autoritzar l'aplicació i on l'aplicació gestiona els tokens d'accés. El registre genera un ID de client i un secret, utilitzat per autenticar l'aplicació a l'API.
- La concessió de l'autorització: se soporten 4 tipus a OAuth 2:
- Codi d'autorització: el més comú, utilitzat per aplicacions servidor.
- Implícit: utilitzat per aplicacions mòbils o web (dispositiu d'usuari).
- Credencials de contrasenya del propietari del recurs: utilitzat per aplicacions fiables.
- Credencials del client: utilitzat amb API d'aplicacions.
JSON Web Token (JWT)
JWT ens permet fer autorització. És un estàndar obert basat en JSON que permet crear tokens d'accés per a propagar identitat i afirmacions (claims). El token és compacte i pot ser enviat en l'entorn web perquè es pugui emmagatzemar al client. El token està signat pel servidor (amb una clau privada), per la qual cosa tant el servidor com el client poden verificar que és legítim.
Les afirmacions estàndar són:
- iss: issuer
- sub: subject
- aud: audience
- exp: expiration time
- nbf: not before
- iat: issued at
- jti: JWT ID
L'autenticació basada en token es pot utilitzar per habilitar una arquitectura stateless, però també es pot utilitzar en arquitectures stateful. Per exemple, un JWT pot contenir totes les dades de sessió necessàries, codificades directament al token, en aquest cas suporta una arquitectura stateless. JWT també es pot utilitzar per emmagatzemar una referència o ID per a la sessió; en aquest cas, les dades de sessió s’ha d’emmagatzemar del costat del servidor, fent que l’arquitectura sigui stateful.
Un esquema de funcionament habitual és el d'access token/refresh token:
- Access token: no passa pel servidor d'autenticació, es tracta només criptogràficament. Duren poc (minuts).
- Refresh token: passa pel servidor d'autenticació. Duren més, i es poden revocar.
Webauthn
Webauthn (Web Authentication) és un estàndar web (W3C) especificat per la FIDO Alliance que defineix una interfície per autenticar usuaris a aplicacions web i serveis mitjançant criptografia de clau pública. En el client, es pot implementar de diverses formes: purament en software, o bé mitjançant un gadget hardware, com per exemple un dispositiu USB. També Android està certificat.
El procediment té dues parts:
- El registre: el client envia una clau pública al servidor, que la registra.
- L'autenticació: el servidor demana al client que signi unes dades, i verifica que es poden desxifrar amb la clau pública que té registrada.