web-dev-qa-db-fra.com

SMS inscription comme dans l'application mobile: WhatsApp

Je me demande comment fonctionnent ces mécanismes d'enregistrement de SMS. J'ai cherché sur Internet, mais le problème est qu'il y a tellement de fournisseurs de sms qui veulent vendre des services de sms en ligne, donc je ne trouve rien ...

Question: Comment cela fonctionne-t-il: définissez votre numéro de mobile et vous avez envoyé un SMS avec un otp. Mettez ce mot de passe dans l'application.

Qu'est-ce qu'il y a derrière? Ont-ils une passerelle sms ou quelque chose comme ça? Combien ça coûte?

Merci

20
eav

Voici un service de vérification de numéro de téléphone simple construit sur Nexmo (avertissement, je fais une petite évangélisation de développeur pour Nexmo). Je pense que c'est fondamentalement ce que vous recherchez, le but est de vérifier qu'un numéro appartient réellement à un utilisateur (pourrait également être utilisé pour l'authentification au 2e facteur).

L'intégration de base pour une application mobile (spécifiquement pour cet exemple de code, mais un flux commun):

  • Envoyez le numéro de téléphone à vérifier, recevez un hachage unique.
  • Le système de vérification envoie un code unique à l'utilisateur.
  • Une fois que l'utilisateur a transmis ce code à votre application, le hachage d'origine et le code sont envoyés au système de vérification pour être validés.

Vous pouvez supprimer la partie hébergée et simplement effectuer ces étapes dans votre application (générer un code, envoyer via une API SMS, vérifiez le code entré par l'utilisateur). Cependant, il existe quelques choses à considérer à ce stade:

  • Les informations d'identification de l'API SMS sont compilées dans votre application distribuée. Est-ce quelque chose que vous voulez risquer?
  • Le code est envoyé via le réseau depuis l'appareil; tandis que SSL arrêtera l'observation occasionnelle du code, quelqu'un qui voulait simuler un enregistrement pourrait très probablement capturer le code de la requête HTTP.

Ces deux problèmes sont résolus en mettant le système de vérification en dehors de l'application mobile.

15
Tim Lytle

je sais que ce message est ancien, mais c'est pour toutes les personnes qui visitent cette page dans le futur:

ce que l'utilisateur "Harsh Shah" a dit est faux ..

vous NE DEVEZ PAS générer de nombre aléatoire sur l'appareil lui-même! cela compromet toute la vérification,

  1. vous demandez le numéro de téléphone à l'utilisateur, envoyez-le au serveur.
  2. en réponse à cette demande, vous générez un nombre aléatoire et enregistrez avec le numéro d'utilisateur sur les enregistrements utilisateur sur db, et envoyez SMS avec ce nombre aléatoire, la RÉPONSE de la demande doit être ENVOYÉE -OK, PAS ENVOYÉ.
  3. le périphérique récupère le SMS et le renvoie au serveur pour comper avec l'enregistrement db existant.

l'échange de données:

  1. le téléphone envoie ('012345567') -> le serveur répond ('SENT-OK'); en arrière-plan: serveur: [générer le numéro, l'envoyer par SMS, enregistrer en db pour l'utilisateur 01234567, par exemple: 123123]

[le téléphone lit le SMS par exemple comme '123123']

  1. le téléphone envoie ('01234567', '123123') -> le serveur répond ('AUTH-OK');

en arrière-plan: serveur: [vérifier la base de données pour l'utilisateur d'enregistrement 01234567, comper le nombre aléatoire généré à l'étape 1 avec le numéro envoyé par l'utilisateur).

si vous générez le numéro dans le téléphone de l'utilisateur, tout script kiddie peut pirater votre authentification en extrayant ce numéro de la mémoire/stockage (facile à faire) et en usurpant un sms le contenant (super facile à faire aussi) ... vous pourriez pense que c'est un cas rare, mais c'est un trou majeur dans la sécurité, vous pouvez vous authentifier en tant que n'importe quel utilisateur existant et lui voler des données si vous le faites comme "Harsh Shah" l'a dit ...

9
itai

Les principes de base sont:

  1. Générez un code aléatoire dans votre application sur l'appareil. Demandez à l'utilisateur son numéro de mobile.
  2. Envoyez ce code et ce numéro de mobile à votre application exécutée sur le serveur.
  3. Appelez l'API de passerelle sms pour envoyer le code sous forme de message au numéro de mobile spécifié.

Il existe de nombreux fournisseurs de passerelle SMS. Vous pouvez effectuer une recherche sur google. La plupart d'entre eux fournissent également un didacticiel pour l'utilisation de leur API dans divers langages de programmation. Le coût est principalement basé sur chaque message et généralement ils sont à acheter sous forme de package de nombre de SMS.

4
androidFan

Cet article explique comment intégrer la vérification des SMS à votre application Android, tout comme la Whats App.

Android ajoutant SMS Vérification comme WhatsApp - Partie 1

Android ajoutant SMS Vérification comme WhatsApp - Partie 2

enter image description here

Fondamentalement, les étapes suivantes impliquent la vérification du numéro de téléphone mobile

  1. Le premier numéro de mobile d'utilisateur sera envoyé à notre serveur où une nouvelle ligne d'utilisateur sera créée.

  2. Notre serveur demande la passerelle SMS pour un sms au numéro de mobile avec un code de vérification.

  3. La passerelle SMS envoie un SMS à la machine utilisateur avec le code de vérification.

  4. Le code de vérification sera renvoyé à nouveau sur notre serveur pour vérification. Notre serveur le vérifie et active l'utilisateur.

2
Minion