Todas las buenas charlas deben comenzar con una cita, ¿verdad? Entonces, ¿sabes cómo dicen que, en teoría, no hay diferencia entre la teoría y la práctica, pero en la práctica sí la hay? Bueno, de eso trata esta charla. Voy a hablarles sobre la teoría de la autorización en GraphQL, y luego si y cómo esto se corresponde con la práctica. Así que, soy Sam, soy cofundador y CTO de Oso, y construimos autorización para desarrolladores. Y como alguien que hizo un doctorado en criptografía y gradualmente se deslizó más y más hacia el mundo práctico, estoy bastante familiarizado con la distinción entre la teoría y la práctica.
Así que prepárense y aprendan un poco sobre patrones en GraphQL, tanto teóricos como prácticos. Sé que hay mucha confusión sobre la diferencia entre autenticación y autorización, así que comenzaré con algunas definiciones. Autenticación se trata de la identidad, ¿sabes, quién es el usuario? Puede ser que los identifiques a través de un nombre de usuario y contraseña, puedes hacer inicio de sesión único, puedes tener autenticación de dos factores, eso es todo autenticación. La autorización es la pieza que viene después. Ahora que sabes quién es el usuario, ¿qué pueden hacer? Y voy a hablar sobre la autorización de la aplicación. Entonces, específicamente, ¿qué pueden hacer dentro de tu aplicación?
Para darte algunos ejemplos, GitHub, este es un gran ejemplo. Tiene un sistema de autorización bastante robusto. Te permite hacer roles a nivel organizacional, como propietario y miembro, y cuáles de esos pueden crear repositorios. También puedes tener roles a un nivel más granular. Puedo invitarte como colaborador a mi repositorio y darte un rol que te otorgue diferentes accesos. Ahora, me gusta mucho GitHub como ejemplo, porque también tienen una API de GraphQL, por lo que podremos ver no solo la autorización genéricamente, sino también en el contexto de GraphQL. Para un ejemplo de autorización más complejo, toma AWS IAM. Y con AWS IAM, puedes escribir tu propia lógica y políticas de autorización para determinar quién tiene permitido hacer qué dentro de esta plataforma gigantesca. Es bastante complejo. Pero hay algunas autorizaciones de aplicaciones en las que quizás no pienses tanto. Toma algo como Google Docs o Notion, donde parte del flujo de trabajo principal es invitar a personas a colaborar en documentos, o tal vez invitarlos a una carpeta completa y decir dónde pueden ver, editar o comentar esos documentos. Eso es toda autorización. GitHub, AWS, Google Docs, Notion, todos estos son ejemplos fantásticos de autorización de aplicaciones.
Antes de comenzar a entrar en los detalles técnicos, ¿por qué es este un tema importante para hablar? Bueno, en primer lugar, si no tienes autorización en una aplicación, tu producto está completamente roto. Tienes una especie de anarquía. Cualquiera puede entrar y hacer cualquier cosa. Pueden eliminar a otros usuarios, pueden eliminar los datos de otras personas, pueden hacer cualquier cosa. Pero por otro lado, si tu autorización está rota, las personas no pueden acceder a nada. Tu aplicación no funciona. Si tu autorización tiene errores, los usuarios comienzan a frustrarse. Todos hemos estado en esa situación en la que la lógica de autorización en una aplicación está tan rota y frustrante que simplemente dices, sabes qué, voy a hacer que todos sean administradores.
Comments