¿Qué tal un genérico que se aplica a cualquier sistema de autenticación externo?
Déjame definir lo que es externo.
a) Servicio de autenticación como AWS Cognitor u Okta u otro proveedor de servicios de inicio de sesión que sea diferente / desconectado de su aplicación y servicios principales.
- ¿Qué es la nube de ventas en CRM?
- ¿Cuál es el mejor proveedor de servicios en la nube en 2016?
- ¿Se puede utilizar Amazon Dynamo DB como alternativa a la escritura de servicios web RESTful?
- En términos simples: ¿Qué es un FLOP?
- ¿Es útil obtener una certificación AWS?
b) Su aplicación / servicio depende de los tokens emitidos por un proveedor de identidad: podría ser AWS cognito u otra cosa.
A su pregunta, ¿por qué se exponen las claves de configuración?
Oh, bueno, demos un paso atrás.
En una autenticación típica, envía un nombre de usuario y una contraseña a su servicio de autenticación y, a cambio, obtiene un token.
Aquí no hay una clave de configuración involucrada.
Pero cuando se está integrando con un Proveedor de Identidad externo (ya sea OAuth o no), usted (es decir, su cliente) tiene que establecerse como alguien en quien el Proveedor de Identidad puede confiar o al menos saber que es usted para que puedan enviar información adicional. de vuelta a su SERVIDOR (no al cliente).
Entonces, cuando la aplicación del cliente inicia la solicitud de autenticación, se identifican con un ID de cliente público y una clave secreta o API, de modo que AWS Cognito o que interactúa directamente con el inicio de sesión de Google puede proporcionar la página de inicio de sesión, autenticarse y luego enviarle un “Código de autorización”.
El código de autorización solo se envía al lado del servidor. (Cuando dice Sin servidor, simplemente no está administrando el servidor subyacente … pero hay un servidor ejecutándose en alguna parte …) y el lado del servidor intercambiará el código de autorización para el Token de acceso.
Entonces, nada de lo que vea en el lado del cliente debería ser terrible. Realmente no puede ocultar esto, por lo tanto, se llama Clientes públicos.
¿Ahora hay implementaciones seguras? Sí definitivamente. Un caso de uso común es cuando una aplicación cliente quiere conectarse a múltiples servicios y se supone que es un “cliente privado / confidencial”, termina exponiendo la identificación y el secreto del cliente.
Entonces, cada vez que desee un token de acceso en el Cliente / UI, puede obtener el consentimiento del usuario e intercambiar el código de autorización para el token de acceso (e intentar mantenerlo en el lado del servidor) o tener un servicio proxy que puede tomar un token existente (puede ser token de sesión web o token de acceso) y devuelva su token para el servicio de terceros.
Espero que esto ayude.