Autentificación mediante OAuth2.0 con Token JWT

Hrytsay, Tetyana (2020). Autentificación mediante OAuth2.0 con Token JWT. Proyecto Fin de Carrera / Trabajo Fin de Grado, E.T.S.I. de Sistemas Informáticos (UPM), Madrid.

Description

Title: Autentificación mediante OAuth2.0 con Token JWT
Author/s:
  • Hrytsay, Tetyana
Contributor/s:
  • Sánchez López, Jesús
Item Type: Final Project
Degree: Grado en Ingeniería del Software
Date: 2020
Subjects:
Freetext Keywords: Protocolos de autenticación
Faculty: E.T.S.I. de Sistemas Informáticos (UPM)
Department: Sistemas Informáticos
Creative Commons Licenses: Recognition - No derivative works - Non commercial

Full text

[img] PDF - Users in campus UPM only - Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (3MB)
[img] Archive (ZIP) - Users in campus UPM only
Download (34kB)

Abstract

Este trabajo trata el tema de autorización y autentificación de usuario en una aplicación o página web. Habla de un marco de trabajo más usado actualmente, concretamente de OAuth 2.0. OAuth 2.0 es un estándar abierto que se usa para garantizar la seguridad al usuario y hacer el uso de una aplicación o página web más seguro y más fácil. Este marco de trabajo declara un conjunto de reglas que permiten en la llamada de Log-In autentificar al usuario usando sus credenciales y devolverle un token, y en las peticiones de recurso autorizar al usuario mediante el token que tiene que el usuario. Para esto, OAuth 2.0 declara distintos agentes que se comunican mandando entre ellos los datos para la autenticación, presenta varios flujos para realizar dichas llamadas y usa un token, para guardar la información de usuario y comprobar su identidad, que normalmente es un JSON Web Token. JSON Web Token o JWT es un protocolo que describe las operaciones de autenticación y validación de token. Existen distintos tipos de JWT. El token puede estar firmado, JWS, o firmado y encriptado, JWE. Dependiendo del tipo de token su estructura cambia y se usa en diferentes ámbitos. Normalmente JWS solo guarda datos que no se consideran datos sensibles como, por ejemplo, un identificador de usuario o su rol. En cambio, JWE si puede llevar información delicada del usuario y por esto tiene más seguridad y es más difícil desencriptarlo. Como una demostración práctica, el trabajo presenta una implementación de dos flujos de OAuth 2.0, Authorization Code que usa SSO y Resource Owner Password que no lo usa. Esta implementación consiste en una página web que permite registrar un usuario, logarse en la página usando Single Sign-On y sin usarlo y cuando el usuario está registrado podrá realizar, en caso de usuario, las acciones como buscar todas las recetas, buscar sus recetas y añadir receta, y, en caso de administrador, devolver todos los usuarios con sus recetas y eliminar un usuario con todas sus recetas. Ambos roles tienen la opción de Log-Out. Para distinguir entre dos flujos, la página llamara a dos servidores diferentes. Para representar el flujo de Authorization Code primero se realiza una llamada a spring-boot-oauth2-jwt-autorization-server, que generara el token, y las llamadas posteriores se realizan a spring-boot-oauth2-jwt que devuelve al usuario el recurso solicitado en caso de que el token que recibe es válido. Para representar el flujo Resource Owner Password solo se usa el servidor spring-boot-oauth2-jwt y tanto genera el token como comprueba la validez de este token y devuelve el recurso al usuario. Abstract: This assignment is about user authorization and authentication in an application or websites. It speaks about the current most used authorization framework, OAuth 2.0. Oauth 2.0 is an open standard that is used for ensure user security and to make the use of application or websites safer and easier. This framework states the rules that allow application to authenticate the user using their credentials and return an token, if this credentials are correct, and to authorize the user by this token when the user consulting his data. For this purpose, OAuth 2.0 declares different roles that communicate each other by sending the data for authentication presents several Authentication Grant to make such communication and uses an token to save user information and to verify his identity. The most used token by OAuth 2.0 is JSON Web Token. JSON Web Token is a protocol that describes several operations to authenticate and to verify the token. They are different type of JWT. The token can be signed (JWS) and encrypted (JWE). Depending on the type of token, his structure changes and the token is used in different arias. Usually, JWS save the user data that is not considered as a sensitive data, for example, the unique identifier or user role. However, JWE saves user sensitive data and for this reason this token safety and is very difficult decrypt him. As practical demonstrations, this assignment presents the implementation of two OAuth Authorization Grant, Authorization Cade that uses SSO and Resource Owner Password that do not use it. This implementation consist in an website that permit user to register and Log-In in website and then, if the role of user is user, they can look for all recipes or their recipes and add new recipe, and, if the role of user is administrator, the user can recover all users with their recipes and delete the user with their recipes. Booth type of users can Log-Out in website. To distinguish between to Authorization Grant, the website calls two different servers. To represent Authorization Grant Code the first call is addressed to spring-boot-oauth2-jwt-autorization-server, that creates an token, and the following calls are addressed to spring-boot-oauth2-jwt, that returns user data if the token is valid. To represent Resource Owner Password Grant they are only use the spring-boot-oauth2-jwt server that creates an verifies the token and returns the user data.

More information

Item ID: 58150
DC Identifier: http://oa.upm.es/58150/
OAI Identifier: oai:oa.upm.es:58150
Deposited by: Biblioteca Universitaria Campus Sur
Deposited on: 21 Feb 2020 05:55
Last Modified: 21 Feb 2020 05:55
  • Logo InvestigaM (UPM)
  • Logo GEOUP4
  • Logo Open Access
  • Open Access
  • Logo Sherpa/Romeo
    Check whether the anglo-saxon journal in which you have published an article allows you to also publish it under open access.
  • Logo Dulcinea
    Check whether the spanish journal in which you have published an article allows you to also publish it under open access.
  • Logo de Recolecta
  • Logo del Observatorio I+D+i UPM
  • Logo de OpenCourseWare UPM