Pueden proteger los campos de la misma manera, exactamente como deseen. Esto hace que la integración sea realmente simple porque solo necesitan preocuparse por la configuración y eso es todo. Luego pueden centrarse en las funcionalidades empresariales y no preocuparse por cómo interactuar con el punto final de autenticación. Ya ha sucedido.
Otro beneficio que queremos tener es que cualquier solicitud de la puerta de enlace a los servicios ya esté autenticada y suficientemente autorizada. Actualmente, con los servicios que se ejecutan a nivel de servicio, no tenemos esto. Por lo tanto, también queremos proporcionar esto.
El siguiente paso lógico es llevar esto al nivel de la puerta de enlace, lo cual tiene varios beneficios. Ahora pueden ver aquí que todo lo que los servicios necesitan hacer es simplemente definir las políticas que les interesan. Por ejemplo, si desean proteger un campo específico y hacer que solo sea autenticado, solo necesitan agregar una directiva de GraphQL a ese campo y listo. De manera similar, si desean autorización, solo necesitan una directiva de GraphQL con una configuración ligeramente diferente para decir que desean ciertos permisos. Y también estarán listos. Desde el punto de vista del servicio, es solo configuración.
Desde el punto de vista de la puerta de enlace, debemos decirle a la puerta de enlace cómo encontrar las políticas de servicio, cómo registrar las políticas y cómo aplicar las políticas a una solicitud de GraphQL. Ahora, con las directivas de GraphQL, podemos hacer esto. Por lo tanto, no solo es realmente simple para los servicios, sino que también es muy simple para la puerta de enlace, porque solo necesita buscar en el esquema federado que ha generado y, según la directiva de autenticación que encuentre, puede crear una política en consecuencia.
Entonces, ¿cómo resuelve el problema? Como pueden ver, hemos trasladado gran parte del trabajo al nivel de la puerta de enlace y desde el punto de vista del servicio, todo lo que necesitan hacer es preocuparse por la configuración. No solo eso, la configuración también está en el esquema de GraphQL. Esto significa que los servicios se pueden implementar con la pila de tecnología que elijan. Siempre que proporcionen un esquema de GraphQL, estarán listos para continuar. Y eso es realmente poderoso para nosotros, porque nos permite escalar verdaderamente con todos los servicios que queremos. Podrían escribirlo en Rust y no importaría. Siempre que apliquen la misma definición de política de autenticación a su servicio, a su servicio de GraphQL, eso es todo de lo que necesitan preocuparse.
Entonces, ¿qué necesitamos hacer? Antes de implementar esto, necesitábamos agregar algunas características a Mucurious para mantener el enfoque lo más simple posible y realmente hacer que este enfoque sea escalable.
Comments