Anteriormente utilizábamos un token generado por POSE, pero se ha cambiado a OAuth, a partir del 21/03/2022 todo va con OAuth.
Configuración
Si hemos seguido esta guía ya tendremos la configuración hecha: Configuración de proyectos Spring Boot para FundeWebJs. Debemos repasar que no nos falte ninguna dependencia o repository en el pom, las clases de configuración, que tengamos las properties que se indican, y que la clase inicial tenga la anotación correspondiente (que básicamente es como decir que se revise todo, pero es importante subrayarlo).
Token en métodos REST
Una vez configurado, las clases de nuestros servicios REST deben llevar esta anotación:
@RequestMapping( "${app.server.path}" )
Y para obtener el token en los métodos REST, utilizamos @AuthenticationPrincipal:
@GetMapping( PRIVATE_PREFIX + API_VERSION + "/resguardos" )
public ResponseEntity getResguardos( @AuthenticationPrincipal Jwt jwt ) { ... }
Podemos obtener el identificador del token simplemente con:
jwt.getSubject()
Obtener datos del usuario a partir del token
Para esto, Recursos Humanos tiene un servicio al que podremos llamar a través de una librería: fundewebjs-serviciosrrhh-client. Esto ya lo tendremos configurado si hemos hecho correctamente el primer paso.
Para utilizarla, simplemente la incluimos con @Autowired:
@Autowired private ServiciosRrhhClientService serviciosRrhhClient;
Y llamamos al método getAfiliacion pasándole el subject del token y el Jwt (cogido con @AuthenticationPrincipal):
// Versión sólo OAuth serviciosRrhhClient.getAfiliacion(subject, jwt);
Esto nos devuelve un objeto de tipo AfiliacionDTO, que contiene información del usuario. En concreto, se compone de estos campos:
private String identificador; private String letra; private String tipoIdentificador; private String nombre; private String apellido1; private String apellido2; private Date fechaNacimiento; private String sexo; private String nacionalidad; private DireccionDTO direccion; private List<String> telefonos; private List<String> emails; private List<CentroAlumnoDTO> centros;
Todos tienen sus correspondientes getters. Lo más normal es que utilicemos el identificador, pero los demás también pueden ser útiles. En el caso de los emails, si un usuario tiene varios, el primero de la lista es el principal.