Comment utiliser AWS Cognito avec Laravel

AWS Cognito est un puissant service qui fournit l’authentification et l’autorisation des utilisateurs pour vos applications. Combiné à Laravel, vous pouvez facilement intégrer Cognito dans votre projet Laravel pour gérer les utilisateurs et l’authentification. Voici comment utiliser AWS Cognito avec Laravel :

Configurer AWS Cognito

  1. Créez un compte AWS si vous n’en avez pas déjà un.
  2. Accédez à la console de gestion AWS et recherchez « Cognito » dans les services.
  3. Créez un nouveau groupe d’utilisateurs dans Cognito, qui sera utilisé pour gérer vos utilisateurs.
  4. Configurez les paramètres nécessaires pour votre groupe d’utilisateurs, tels que les exigences de mot de passe, la vérification par e-mail et l’authentification multi-facteurs.
  5. Une fois votre groupe d’utilisateurs configuré, notez l’« User Pool ID » et le « Client ID », car ils seront nécessaires dans la configuration Laravel.

Installer le package Laravel

  1. Ouvrez votre projet Laravel dans un terminal et exécutez la commande suivante pour installer le package requis :

    composer require aws/aws-sdk-php-laravel
  2. Une fois l’installation terminée, ouvrez le fichier config/app.php et ajoutez la ligne suivante au tableau providers :

    'Aws\Laravel\AwsServiceProvider',
  3. Également dans le fichier config/app.php, ajoutez la ligne suivante au tableau aliases :

    'AWS' => 'Aws\Laravel\AwsFacade',

Configurer Laravel

  1. Ouvrez le fichier .env à la racine de votre projet Laravel et ajoutez les lignes suivantes :

    AWS_ACCESS_KEY_ID=your_access_key_id
    AWS_SECRET_ACCESS_KEY=your_secret_access_key
    AWS_DEFAULT_REGION=your_aws_region
    AWS_COGNITO_USER_POOL_ID=your_user_pool_id
    AWS_COGNITO_CLIENT_ID=your_client_id
  2. Remplacez your_access_key_id, your_secret_access_key, your_aws_region, your_user_pool_id et your_client_id par les valeurs correspondantes de votre groupe d’utilisateurs AWS Cognito.

Utiliser Cognito dans Laravel

  1. Dans votre application Laravel, vous pouvez maintenant utiliser la facade AWS pour interagir avec AWS Cognito. Par exemple, vous pouvez créer un nouvel utilisateur en appelant la méthode createUser :

    use Illuminate\Http\Request;
    use AWS;
    public function createUser(Request $request)
    {
    $result = AWS::createUser([
    'UserPoolId' => config('app.AWS_COGNITO_USER_POOL_ID'),
    'Username' => $request->input('email'),
    'TemporaryPassword' => $request->input('password'),
    'MessageAction' => 'SUPPRESS',
    'DesiredDeliveryMediums' => ['EMAIL']
    ]);
    }
  2. Vous pouvez également utiliser la méthode authenticate pour authentifier les identifiants d’un utilisateur :

    use Illuminate\Http\Request;
    use AWS;
    public function authenticate(Request $request)
    {
    $result = AWS::authenticate([
    'UserPoolId' => config('app.AWS_COGNITO_USER_POOL_ID'),
    'ClientId' => config('app.AWS_COGNITO_CLIENT_ID'),
    'AuthFlow' => 'USER_PASSWORD_AUTH',
    'AuthParameters' => [
    'USERNAME' => $request->input('email'),
    'PASSWORD' => $request->input('password')
    ],
    ]);
    }

En suivant ces étapes, vous pouvez intégrer AWS Cognito avec votre application Laravel et tirer parti de ses puissantes fonctionnalités de gestion des utilisateurs et d’authentification. Grâce à cette intégration, vous pouvez garantir un système de comptes sécurisé et efficace pour votre application sans avoir besoin d’un effort de développement ou de maintenance important.