Actualmente estoy escribiendo un sitio de portal para Microsoft Dynamic CRM, el portal funciona así:
- Cada usuario tiene su propia cuenta para iniciar sesión en mi portal.
- A cada usuario se le asigna una credencial de CRM separada por el administrador. Actualmente, tanto el nombre de usuario como la contraseña para el sitio de CRM se almacenan como texto sin formato (la contraseña para el propio portal está correctamente hash, salted, ... usando AspNet Identity Core).
- Después de iniciar sesión en mi portal, los usuarios se autenticarán con el sitio de CRM en segundo plano y podrán comenzar a ver, agregar, editar y eliminar registros en el sitio de CRM.
- Los usuarios pueden cambiar su propia contraseña de portal, pero las credenciales de CRM son fijas y solo pueden ser cambiadas por el administrador.
Obviamente no querría almacenar la credencial de CRM en texto sin formato, pero no puedo encontrar ninguna solución que funcione para mi problema. He considerado las siguientes opciones:
-
Hash contraseña de CRM y almacenar el hash. Esto no funciona porque necesito la contraseña original para autenticar con el sitio de CRM.
-
Derivó una clave de la contraseña del usuario y cifró la contraseña de CRM, luego almacene la contraseña cifrada (estilo del administrador de contraseñas). No funciona porque El administrador no podrá cambiar la contraseña de CRM.
-
Igual que 2, pero use la contraseña de administrador para derivar la clave de cifrado. Esto tampoco funciona porque entonces ya no puedo autenticar a los usuarios con el sitio de CRM.