Maison  >  Article  >  développement back-end  >  Implémentation de l'authentification de sécurité PHP à l'aide des groupes d'utilisateurs AWS Cognito

Implémentation de l'authentification de sécurité PHP à l'aide des groupes d'utilisateurs AWS Cognito

WBOY
WBOYoriginal
2023-07-25 14:37:321657parcourir

Utilisation des groupes d'utilisateurs AWS Cognito pour implémenter la vérification de sécurité PHP

Introduction :
La sécurité est un aspect crucial lors du développement d'applications Web. L'authentification et l'autorisation des utilisateurs sont des éléments importants pour garantir que les utilisateurs ne peuvent accéder qu'au contenu pour lequel ils sont autorisés. AWS Cognito User Pools est un service d'authentification utilisateur entièrement géré qui peut nous aider à mettre en œuvre facilement des fonctions d'authentification utilisateur. Cet article décrit comment mettre en œuvre une authentification sécurisée à l'aide des groupes d'utilisateurs AWS Cognito et de PHP.

Introduction à la fonction :

  1. Inscription et connexion de l'utilisateur.
  2. Mot de passe oublié et réinitialiser le mot de passe.
  3. Vérifiez l'adresse e-mail de l'utilisateur.
  4. Générez un jeton d'accès et un jeton d'actualisation.

Prérequis :

  1. Compte AWS.
  2. Les groupes d'utilisateurs AWS Cognito ont été créés et configurés.

Étape 1 : Créer un pool d'utilisateurs Cognito
Créez un nouveau pool d'utilisateurs dans la console AWS. Configurez les propriétés du groupe d'utilisateurs, telles que les propriétés utilisateur et la stratégie de mot de passe, et notez l'ID du groupe d'utilisateurs.

Étape 2 : Ajouter le SDK PHP
Téléchargez et installez le SDK AWS pour PHP.

Étape 3 : Configurer les informations d'identification d'accès AWS
Configurez les informations d'identification d'accès AWS dans le code PHP. Créez un profil d'informations d'identification AWS, nommez-le credentials et ajoutez les informations d'identification au fichier.

[default]
aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY

Quatrième étape : implémenter la fonctionnalité d'enregistrement et de connexion des utilisateurs

use AwsCognitoIdentityProviderCognitoIdentityProviderClient;
use AwsExceptionAwsException;

$cognitoClient = new CognitoIdentityProviderClient([
    'region' => 'us-east-1',
    'version' => 'latest'
]);

// 用户注册
try {
    $signupResult = $cognitoClient->signUp([
        'ClientId' => 'YOUR_CLIENT_ID',
        'Username' => 'user@example.com',
        'Password' => 'P@ssw0rd',
        'UserAttributes' => [
            [
                'Name' => 'email',
                'Value' => 'user@example.com'
            ],
            [
                'Name' => 'name',
                'Value' => 'John Doe'
            ]
        ]
    ]);
    echo 'User registered successfully - ' . $signupResult['UserSub'];
} catch (AwsException $e) {
    echo $e->getMessage();
}

// 用户登录
try {
    $authResult = $cognitoClient->initiateAuth([
        'AuthFlow' => 'USER_PASSWORD_AUTH',
        'ClientId' => 'YOUR_CLIENT_ID',
        'AuthParameters' => [
            'USERNAME' => 'user@example.com',
            'PASSWORD' => 'P@ssw0rd'
        ]
    ]);
    
    // 记下访问令牌和刷新令牌
    $accessToken = $authResult['AuthenticationResult']['AccessToken'];
    $refreshToken = $authResult['AuthenticationResult']['RefreshToken'];
    
    echo 'User logged in successfully';
} catch (AwsException $e) {
    echo $e->getMessage();
}

Étape cinq : implémenter la réinitialisation du mot de passe et la fonctionnalité de vérification de l'adresse e-mail

// 重置密码
try {
    $resetPasswordResult = $cognitoClient->forgotPassword([
        'ClientId' => 'YOUR_CLIENT_ID',
        'Username' => 'user@example.com'
    ]);
    echo 'Password reset email sent successfully - ' . $resetPasswordResult['CodeDeliveryDetails']['Destination'];
} catch (AwsException $e) {
    echo $e->getMessage();
}

// 验证电子邮件地址
try {
    $verifyEmailResult = $cognitoClient->adminConfirmSignUp([
        'UserPoolId' => 'YOUR_USER_POOL_ID',
        'Username' => 'user@example.com'
    ]);
    echo 'Email address verified successfully';
} catch (AwsException $e) {
    echo $e->getMessage();
}

Conclusion :
En utilisant les pools d'utilisateurs AWS Cognito et PHP, nous pouvons facilement implémenter la fonction d'authentification des utilisateurs. L'exemple de code ci-dessus illustre les fonctionnalités courantes d'enregistrement, de connexion, de réinitialisation du mot de passe et de vérification de l'adresse e-mail. Vous pouvez étendre davantage ces fonctionnalités pour répondre aux besoins de votre application. Il est de notre responsabilité inéluctable, à nous, les développeurs, d'assurer la sécurité des données des utilisateurs. J'espère que cet article vous sera utile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn