¿Cómo evito que los usuarios usen mis aplicaciones de iOS a menos que se hayan autenticado en un servidor?

0

He intentado encontrar una respuesta a esta pregunta desde hace un tiempo, pero mis esfuerzos han sido infructuosos. He encontrado varios artículos y preguntas sobre la autenticación fuera de línea, pero estos están principalmente relacionados con el almacenamiento de credenciales de inicio de sesión localmente después de que un usuario ya haya iniciado sesión una vez en línea.

La razón por la que quiero implementar un sistema de este tipo es porque ciertos grupos deberían tener acceso a mis aplicaciones de forma gratuita, mientras que otros que no pertenecen a estos grupos deberían pagar para poder usar estas aplicaciones. Que yo sepa, esto no es algo que sea compatible con la tienda de aplicaciones. Además, eventualmente, la serie de aplicaciones debería admitir otros dispositivos, por lo que tiene sentido tener un servicio de inicio de sesión común.

Estas aplicaciones no necesitan recursos de un servidor. El servidor se utiliza simplemente para autenticar al usuario.

Cuando un usuario inicia una aplicación, debe iniciar sesión antes de poder usarla. La autenticación se lleva a cabo en un servidor y ya está ordenada. La pregunta es cómo puedo restringir el uso de la aplicación, que ya está instalada en el dispositivo en el momento en que se le solicita al usuario que inicie sesión. Si se tratara de una aplicación web, almacenaría una cookie de sesión que luego se usa cada vez que se solicita un recurso. . En mi caso, todos los recursos ya están en el dispositivo, por lo que si alguien es lo suficientemente terco, podrá usar la aplicación sin iniciar sesión primero, pero no quiero que esto sea demasiado fácil. Si hay algún equivalente fuera de línea de una cookie de sesión que puedo usar para verificar que el usuario haya iniciado sesión, ya que la aplicación se está utilizando, sería ideal. No estoy almacenando ninguna información confidencial en las aplicaciones ni sería una catástrofe si alguien tuviera acceso sin primero iniciar sesión en una cuenta, pero me gustaría saber si hay una buena manera de resolver este problema.

  • Cuando los usuarios inicien mis aplicaciones, se les pedirá que inicien sesión
  • Después de iniciar sesión, los usuarios deberían poder utilizar la aplicación, y no debería ser tan fácil eludir el proceso de inicio de sesión

No estoy pidiendo detalles, pero llegué a un callejón sin salida y me gustaría saber sobre cualquier tecnología o técnica que pueda ayudar.

    
pregunta Slick Vick 08.08.2017 - 10:33
fuente

1 respuesta

1

Creo que has superado el problema en tu cabeza (práctica común para nosotros, los desarrolladores) o tienes una falla de diseño en tu sistema. Podría ser ambos.

Su pregunta dice:

  

¿Cómo puedo evitar que los usuarios utilicen mis aplicaciones iOS a menos que se hayan autenticado en un servidor?

La respuesta es: no permita que la aplicación se inicie hasta que un usuario haya iniciado sesión. Cuando inicie la aplicación, inicie directamente en una pantalla de inicio de sesión. Pero, parece que ya tienes eso en su lugar:

  

Cuando un usuario inicia una aplicación, debe iniciar sesión antes de poder usarla

Entonces, realmente tu pregunta parece ser:

  

¿Cómo puedo restringir el uso de la aplicación ...?

Sus cuentas de usuario deben tener roles. Como mínimo, un rol de usuario gratuito y premium.

Tras la autenticación exitosa, el usuario debe obtener un token, lo que les permite utilizar la aplicación. Para los fines de esta discusión, diré "acceso sin restricciones a la aplicación" para evitar las complejidades de desbloquear solo esta característica o esa característica, que es completamente posible dependiendo de su arquitectura.

El token no solo debe dar acceso al uso de la aplicación, sino que también debe tener una opción de vencimiento, pero eso depende de usted. (Si un usuario gratuito es perpetuamente libre, y un usuario premium que paga una única vez produce una licencia perpetua, no es necesario que caduque).

Una vez que el usuario inicie sesión por primera vez, su servidor de autenticación de usuario emitirá un token en función de su función y estado. Si son usuarios gratuitos, recibirán este token, que les brinda acceso sin restricciones a la aplicación. Si son usuarios premium, entonces el servidor retendrá el token a menos que la prima haya sido pagada.

Aunque el método de implementación está un poco fuera del alcance de security.stackexchange.com, haré una versión simplificada aquí porque creo que es parte de los fundamentos de su pregunta original.

La complicación surge con esta pregunta: ¿cómo pagan los usuarios premium para desbloquear la aplicación? No puedes tener una aplicación gratuita y de pago porque todos descargarían la gratuita y nunca pagarían.

Solo te queda la opción de una sola aplicación y la modificación de la función de usuario en función del estado de pago (o incluso de suscripción).

Ya que has publicado esto en iOS, haré referencia a Compras desde la aplicación . La aplicación debe ser gratuita por defecto con las opciones de compra dentro de la aplicación. Cuando un usuario gratuito descarga la aplicación, puede solicitar su cuenta gratuita (o, si pertenecen a un grupo determinado que tiene un código de cupón, etc.) necesitan la opción de ingresar, lo que cambiará su rol en su servidor. a un rol de usuario libre).

De lo contrario, puede aprovechar los pagos dentro de la aplicación para actualizar la cuenta a una versión premium / desbloqueada.

Dicho esto, que una aplicación sea "gratuita" y luego requiera un código de desbloqueo o la compra desde la aplicación será una implementación de "alta fricción".

Si decidiste ir con una versión gratuita y de pago en la tienda de aplicaciones. La versión gratuita simplemente requeriría un código de cupón para activar la suscripción gratuita. O, como alternativa, tendría que esperar a que su personal apruebe al nuevo usuario. (Mucho trabajo para una aplicación gratuita).

La versión de pago funcionaría justo después de la descarga. En este caso, está restringiendo la implementación de "alta fricción" a los usuarios que de todas formas obtienen cosas gratis. Los usuarios pagados tienen una transacción suave como la mantequilla.

  

La autenticación se lleva a cabo en un servidor y ya está ordenada

Si su servidor de autenticación no admite roles, entonces esto no está ordenado, lo que puede ser un defecto de diseño que debe revisarse. Especialmente teniendo en cuenta que si actualmente no tiene roles de usuario, ciertamente necesitará tener un código que solicite el estado de suscripción de la API de Apple o un código que reciba un evento cuando se haya pagado una sub-tasa / tarifa para cambiar el rol de un usuario.

    
respondido por el DrDamnit 08.08.2017 - 12:13
fuente

Lea otras preguntas en las etiquetas