5

Estoy construyendo una extensión de Chrome que interactuará con salesforce-chatter api. Pero para un usuario que usa autenticación de oAuth (flujo de agente de usuario), necesito incrustar mi clave de cliente en mi extensión.Incrustar Id de cliente en extensión de cromo

¿Causará esto algún problema de seguridad? ¿O hay una forma de usar OAuth sin incrustar la identificación del cliente en mi extensión?

Respuesta

6

La identificación del cliente tiene que incluirse en una solicitud, por lo que el proveedor sabe que la solicitud vino de usted, como ya señaló @Matt Lacey. Normalmente, el proveedor también emite un secreto cliente secreto que también se incluye en la solicitud token de acceso, por lo que el proveedor puede verificar que su aplicación tenga permiso para usar esa identificación de cliente. Las extensiones de Chrome se ejecutan en una plataforma abierta y la plataforma en sí misma no proporciona ningún método para autenticar la extensión contra un servidor (que la fuerza de ventas también tendría que admitir) o almacenar propiedades de forma segura (sería difícil, si no imposible, en una plataforma abierta). plataforma abierta), por lo que mantener el secreto del cliente confidencial no es posible.

Como este es un problema común, ya se considera en la especificación OAuth (ver section 10.1 Client Authentication y 10.2 Client Impersonation). Por lo tanto, se requiere que el proveedor haga comprobaciones adicionales, pero del lado del cliente no puede hacer nada para mejorar la seguridad de manera efectiva.

Si desea obtener más información sobre cómo se manejará esto en dispositivos Android en el futuro, consulte mi respuesta here.

2

Debe incrustar el ID de cliente en la extensión para que Salesforce sepa qué está intentando autenticar la aplicación. Estos ID de cliente están destinados a ser siempre almacenados y pasados ​​al servidor, por lo que siempre que lo guarde de forma segura no debería haber ningún problema.

+0

¿Qué quiere decir con "almacenarlo de manera segura"? ¿Algún acercamiento que tengas? Mi extensión va a ser pública. ¿Qué pasa si un hacker simplemente copia mi extensión y hace que el usuario la instale en lugar de la mía? –

0

Como Matt explicado si está creando una aplicación empaquetada, se verá obligado a incluir la identificación del cliente. Otra de las soluciones es escribir la aplicación como una aplicación alojada:

What is the difference between packaged apps and hosted apps?

El inconveniente de esto es la complejidad añadida de la gestión de un servidor web. Pero permitirá una mayor seguridad.

+0

¿Y cómo autenticaría la extensión de Chrome en el servidor web? Esto simplemente traslada el problema de 'Cliente <-> Salesforce' a' Cliente <-> Servidor'. –

+1

¡No lo harías! no ejecute ningún código a través del cliente. Una aplicación alojada es efectivamente una aplicación web en un contenedor de la tienda de aplicaciones de Chrome. –

+0

Ah, lo siento @Daniel, no entendió su respuesta: / –

Cuestiones relacionadas