Okta, OAuth2 y Vue 3

B

Buenas noches hijos de vuestras respectivas madres.

Tengo los ojos secos ya del tiempo que llevo leyendo documentación y viendo vídeos en referencia al estándar OAuth2 para autorización y su extensión OpenID para autenticación y no es que haya avanzado mucho que digamos. Como resource y authorization server me he decidido por Okta, más que nada porque tienen varios vídeos de charlas en las que explican las causas y el porqué de las soluciones que aplican y me ha sido bastante fácil seguirlos, así que ante el desconocimiento pues les he dado un voto de confianza. Para el backend, con Spring Boot y la dependencia Okta Starter no he tenido mayor problema; te dan todo bastante mascadito ya que sólo tienes que añadir el issuer y especificar el audience por defecto de la API de Okta que se encargará de gestionar el token bajo el estándar JWT. Después anotar los endpoints de los controladores cuyo uso quieres que sea autorizado -todos en mi caso- y reflejar esta estructura en un archivo de configuración que extiende de WebConfigurationAdapter si la memoria no me falla. Hasta ahí vamos a suponer que bien ya que las consultas con Insomnia me devolvían 401 por authorization required.

El problema ha venido con el frontend y Vue 3 en particular. En primer lugar por el debate de si usar PKCE en una SPA con autorización implícita por la inseguridad que ello conlleva, más tarde, trasteando con las opciones he visto que existía la opción de añadir el modo autorefresh token como versión alpha, luego y esto ya a título personal, pensando en que si voy a subirlo a GitHub, la información sensible no debería estar visible en el configuration.properties para lo cual es visto algo muy por encima de vaults por un lado y jasypt por otro, y lo último y más gracioso, que después de haberme dejado las córneas con esta mierda, he comprobado que { OktaAuth } y OktaVue no son compatibles con Vue 3 cuando he ido a generar las configuraciones.

Así que en vista del tremendo fail acudo a vuestra inconmensurable sabiduría... ¿qué enfoque es el más recomendable hoy en día para añadir seguridad al consumo de una API? Si puede ser compatible con Vue 3.

Ranthas

No entiendo nada, ¿qué tiene que ver Vue para consumir una API securizada?

Si estás usando OAuth2.0, las peticiones deben llevar en la cabecera Authentication el token JWT y ya; no entiendo todo este lío que comentas.

Para encriptar ficheros de configuración, Jasypt es súper sencillo y además, está integrado con Spring

1 respuesta
Wei-Yu

Imagino que la "compatibilidad" es con respecto al sdk de okta para integrarte cómodamente. Lo puedes picar a mano si te apetece aprenderlo pero es un poco lata. Yo hace algo de tiempo estuve pensando en usar okta pero al final enchufé un auth0 del free tier y ando integrándome ahora con él usando react+dotnet, parece cómodo pero imagino que te quita parte de la gracia que estás buscando (aprender más a fondo oauth).

Si el problema lo tienes con el sdk/toolkit/lib/loquesea de okta y su compatibilidad con la versión que tienes de vue, o bajas la versión de vue o buscas otra plataforma que te facilite la integración o lo picas a mano tú todo, creo que ahí no hay mucho más margen en cuanto a opciones disponibles.

Sobre qué es más o menos seguro no te puedo decir nada porque no ahondé lo suficiente y parece que lo tienes bastante trillado. En última instancia si lo haces para aprender con que te quedes con el tradeoff de cada opción y entiendas las cosas para mí es más que de sobra.

1 respuesta
B

#2 #3 sí perdón, me expliqué un poco como el orto, era enfocado a la sdk y la compatibilidad con el framework del front, lo de los tokens en la cabecera ya sabía xD gracias, en esencia eso quería saber para no tener que deducirlo después de estar horas buscando, que no hay más cullons que el downgrade o hacerlo a pelo.

Wei-Yu

imagino que lo habrás hecho ya pero échale un vistazo al estado de la versión del sdk, no vaya a coincidir que estén ultimando los detalles de la nueva versión y con esperarte una semanita ya lo tienes adaptado a vue 3

1 respuesta
B

#5 Pues no... no lo había hecho :joy: y acabo de dar con este branch por el que se intuye que está a punto de caramelo el merge oficial. En mi mente de hijo del retraso no había barajado la opción de... esperar, pero igual es lo más inteligente sí y seguir por otros derroteros mientras. A veces creo que no hay nadie al volante xD

1

Usuarios habituales