Estoy realizando un desarrollo de C # relativamente amateur para un pequeño equipo de soporte al cliente y estoy trabajando con la API SalesForce en mi aplicación. Con SalesForce, el inicio de sesión mediante la API requiere que adjunte un token de seguridad a la contraseña. Debido a que mis usuarios son meticulosos, será necesario que (solo) el token de seguridad se almacene en la base de datos de la aplicación para que no tengan que ingresarlo cada vez que la utilicen.
Espero obtener algunos consejos sobre el mejor método para mantener este razonablemente seguro, ya que esta es mi primera incursión en cualquier tipo de seguridad seria. He estado leyendo y recogiendo el método de cifrado / descifrado AESThenHMAC de esto publicar .
Mis pensamientos sobre el proceso son los siguientes:
- En el primer inicio de sesión en la aplicación, se le solicita al usuario su nombre de usuario, contraseña y token de seguridad.
- El token de seguridad se cifra con SimpleEncryptWithPassword desde arriba con su contraseña como parámetro de "contraseña" y se almacena en la base de datos.
- En los inicios de sesión posteriores, se le solicita al usuario su nombre de usuario y contraseña, el token de seguridad se recupera y descifra, luego el usuario inicia sesión con la API de SalesForce.
Mis preguntas son:
- ¿Proporciona esto un nivel razonable de seguridad para el almacenamiento del token de seguridad?
- Si no, ¿por qué no y qué puedo / debo hacer para mejorarlo?
-
Si es así, ¿cuál de los siguientes es el mejor método para indexar el token de seguridad por el nombre de usuario en la base de datos?
- El nombre de usuario es texto sin formato
- El nombre de usuario está hasheado
- El nombre de usuario se cifra de la misma manera que el token de seguridad
Gracias de antemano por cualquier consejo / ayuda / entrada.