Je souhaite utiliser un numéro de téléphone comme nom d'utilisateur pour mon application et je souhaite pouvoir simplifier l'inscription en vérifiant simplement le numéro de téléphone à chaque fois qu'ils souhaitent se connecter - pas de mot de passe en désordre pour se souvenir de l'entreprise.

Comment faire cela avec AWS Cognito User Pool car il me demande de configurer obligatoirement un mot de passe pour chaque utilisateur.

J'ai pensé à utiliser un mot de passe factice pour chaque utilisateur et à configurer la vérification obligatoire des utilisateurs. Chaque fois que l'utilisateur se déconnecte, je peux "Annuler la vérification" de l'utilisateur afin que la prochaine fois, il soit automatiquement invité à vérifier le numéro de téléphone. De plus, je câblerais mon application pour "se connecter" uniquement si l'utilisateur est vérifié.

Veuillez me faire savoir si c'est la meilleure approche: (Je suis nouveau sur AWS et je n'ai pas pu trouver de messages pour ce scénario.

Merci !!

25
spar 14 août 2017 à 05:47

2 réponses

Meilleure réponse

Étant donné qu'AWS Cognito ne prend actuellement pas en charge l'authentification sans mot de passe, vous devez implémenter une solution de contournement avec un mot de passe aléatoire stocké en externe. Vous pouvez implémenter le flux d'authentification comme suit.

  • Après l'inscription de l'utilisateur (demandez également le numéro de mobile et rendez-le obligatoire), enregistrez le numéro de mobile, le nom d'utilisateur et le mot de passe également dans Dynamodb chiffrés avec AWS KMS (pour plus de sécurité).
  • Vous pouvez utiliser MFA avec le numéro de mobile pour le défi d'authentification afin qu'après que l'utilisateur ait entré le numéro de mobile et appuyé sur la connexion (dans le frontend), dans le backend, vous pouvez automatiquement faire la correspondance du mot de passe du nom d'utilisateur (Passthrough) et déclencher le MFA pour envoyer un code pour le mobile de l'utilisateur et vérifiez cela à l'aide du kit SDK AWS Cognito (sans implémenter un message mobile personnalisé et un défi).
  • Si vous prévoyez d'implémenter le flux manuellement (sans MFA) pour envoyer le SMS et la validation, vous pouvez utiliser AWS SNS à cette fin.

Consultez l'exemple de code suivant pour comprendre les connaissances de MFA et reportez-vous à ce lien pour plus de détails.

    var userData = { 
        Username : 'username',
        Pool : userPool
    };

    cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);

    var authenticationData = {
        Username : 'username',
        Password : 'password',
    };

    var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);

    cognitoUser.authenticateUser(authenticationDetails, {
        onSuccess: function (result) {
            alert('authentication successful!')
        },

        onFailure: function(err) {
            alert(err);
        },

        mfaRequired: function(codeDeliveryDetails) {
            var verificationCode = prompt('Please input verification code' ,'');
            cognitoUser.sendMFACode(verificationCode, this);
        }

    });

Remarque: Ici, le MFA avec numéro de mobile n'est pas utilisé dans le but de MFA, mais comme solution de contournement pour répondre à vos besoins.

18
Ashan 14 août 2017 à 05:57

Cela peut fonctionner, mais le stockage du mot de passe dans dynamoDB peut poser des problèmes, compte tenu de la sécurité. à la place, nous pouvons essayer comme ceci:

option n ° 1: - inscriptions des utilisateurs avec nom d'utilisateur et mot de passe.

  1. setup déclencheurs cognito - nous pouvons utiliser des fonctions lambda.
  2. A. Créer un challenge d'authentification B.Définir un challenge d'authentification C.
  3. l'application cliente doit implémenter le flux d'authentification CUSTOM_CHALLENGE.
  4. demandez à l'utilisateur d'entrer le numéro de téléphone enregistré, transmettez-le dans le champ du nom d'utilisateur. le déclencheur B comprendra la demande et transmettra le flux au déclencheur A, le déclencheur A générera un code aléatoire 5. utiliser le service AWS SNS pour envoyer des SMS au numéro de mobile de l'utilisateur
  5. Le déclencheur C validera OTP et permettra aux points de connexion de prendre en compte: a. configurer le numéro de téléphone comme alias (sélectionnez Autoriser également la connexion avec un numéro de téléphone vérifié) b. rendre le champ du numéro de téléphone vérifiable (cela permet à l'utilisateur de recevoir OTP)

option n ° 1: - inscriptions des utilisateurs sans nom d'utilisateur ni mot de passe. configuration cognito

  1. configurer le numéro de téléphone comme alias (sélectionnez Autoriser également la connexion avec un numéro de téléphone vérifié)
  2. rendre le champ du numéro de téléphone vérifiable (cela permet à l'utilisateur de recevoir OTP)
  3. lors de l'inscription, ne demandez pas à l'utilisateur de fournir un nom d'utilisateur et un mot de passe, demandez simplement le numéro de téléphone
  4. générer l'UUID pour que le nom d'utilisateur et le mot de passe soient uniques et les transmettre à cognito avec le numéro de téléphone
  5. Cognito envoie le code OTP à l'utilisateur pour confirmation de compte.
  6. pour le numéro de téléphone avec les déclencheurs de configuration de connexion OTP comme expliqué dans l'option ci-dessus.

Pour le code des déclencheurs, reportez-vous aws cognito pool avec plusieurs options de connexion

1
suryan 24 sept. 2018 à 18:40