Maison  >  Article  >  développement back-end  >  Implémentation de l'authentification de sécurité PHP à l'aide des identités fédérées AWS Cognito

Implémentation de l'authentification de sécurité PHP à l'aide des identités fédérées AWS Cognito

PHPz
PHPzoriginal
2023-07-24 13:25:55787parcourir

Authentification PHP sécurisée à l'aide des identités fédérées AWS Cognito

L'authentification des utilisateurs est un composant important lors de la création d'applications Web. AWS Cognito Federated Identities est une solution puissante qui peut nous aider à mettre en œuvre des fonctions d'authentification et d'autorisation.

AWS Cognito Federated Identities nous permet de nous authentifier à l'aide de plusieurs fournisseurs d'identité, notamment Amazon, Facebook, Google, Apple, etc. Cela permet aux utilisateurs de se connecter à notre application en utilisant leur compte préféré.

Ci-dessous, nous utiliserons du code PHP pour implémenter la fonction d'authentification des identités fédérées AWS Cognito.

Tout d'abord, nous devons créer un pool d'identités AWS Cognito sur la console AWS. Ouvrez la AWS Management Console et choisissez Cognito, puis créez un nouveau pool d'identités. Pendant le processus de création, nous devons attribuer un identifiant unique au pool d'identités, tel que "myapp-identity-pool".

Après avoir créé le pool d'identités, nous devons obtenir l'ID du pool d'identités et l'ARN du rôle du pool d'identités. Ces informations seront utilisées dans notre code PHP.

Ensuite, nous devons installer AWS SDK pour PHP via composer. Basculez vers le répertoire du projet sur la ligne de commande et exécutez la commande suivante :

composer require aws/aws-sdk-php

Une fois l'installation terminée, nous pouvons commencer à écrire du code PHP.

// 引入 AWS SDK for PHP
require 'vendor/autoload.php';

use AwsCognitoIdentityProviderCognitoIdentityProviderClient;
use AwsCognitoIdentityCognitoIdentityClient;
use AwsCredentialsCredentialsProvider;

// 配置 AWS 认证信息
$credentials = new CredentialsProvider([
    'key' => 'YOUR_AWS_ACCESS_KEY',
    'secret' => 'YOUR_AWS_SECRET_ACCESS_KEY',
]);

// 创建 CognitoIdentityProviderClient 实例
$client = new CognitoIdentityProviderClient([
    'region' => 'us-west-2',
    'credentials' => $credentials,
    'version' => 'latest',
]);

// 用户登录
function login($username, $password) {
    global $client;
    
    try {
        $result = $client->adminInitiateAuth([
            'AuthFlow' => 'ADMIN_USER_PASSWORD_AUTH',
            'ClientId' => 'YOUR_USER_POOL_CLIENT_ID',
            'UserPoolId' => 'YOUR_USER_POOL_ID',
            'AuthParameters' => [
                'USERNAME' => $username,
                'PASSWORD' => $password,
            ],
        ]);
        
        return $result['AuthenticationResult']['IdToken'];
    } catch (Exception $e) {
        return null;
    }
}

// 验证 Token
function verifyToken($token) {
    global $client;
    
    try {
        $result = $client->getUser([
            'AccessToken' => $token,
        ]);
        
        return $result['Username'];
    } catch (Exception $e) {
        return false;
    }
}

Dans le code ci-dessus, nous avons d'abord introduit le SDK AWS pour PHP et configuré les informations de certification AWS. Ensuite, nous avons créé une instance CognitoIdentityProviderClient pour communiquer avec le service AWS Cognito. La fonction

login est utilisée pour la vérification de la connexion de l'utilisateur, accepte le nom d'utilisateur et le mot de passe comme paramètres et renvoie un jeton d'authentification. Dans cette fonction, nous appelons la méthode adminInitiateAuth pour effectuer la vérification de la connexion de l'utilisateur, et le résultat renvoyé contient un jeton d'authentification. La fonction login 函数用于用户登录验证,接受用户名和密码作为参数,并返回一个身份验证令牌。在这个函数中,我们调用 adminInitiateAuth 方法来进行用户登录验证,并返回的结果中包含了一个身份验证令牌。

verifyToken 函数用于验证令牌的有效性,接受一个身份验证令牌作为参数,并返回一个布尔值表示是否验证成功。在这个函数中,我们调用 getUser 方法来获取令牌对应的用户信息,并判断是否存在该用户。

现在我们可以在我们的应用程序中使用以上定义的函数来实现身份验证功能了。

$token = login('testuser', 'password123');

if ($token) {
    // 用户登录成功,进行其他操作
    // 例如保存用户登录状态、跳转到其他页面等
} else {
    // 用户登录失败,显示登录错误提示
    echo 'Login failed!';
}

以上示例代码中,我们使用了一个测试用户进行登录,并调用了 login

verifyToken est utilisée pour vérifier la validité du jeton, accepte un jeton d'authentification comme paramètre et renvoie une valeur booléenne indiquant si la vérification est réussie. Dans cette fonction, nous appelons la méthode getUser pour obtenir les informations utilisateur correspondant au token et déterminer si l'utilisateur existe.

Nous pouvons désormais utiliser la fonction définie ci-dessus pour implémenter la fonctionnalité d'authentification dans notre application. 🎜rrreee🎜Dans l'exemple de code ci-dessus, nous avons utilisé un utilisateur test pour se connecter et avons appelé la fonction login pour l'authentification. Si le jeton d'authentification renvoyé n'est pas vide, la connexion est réussie. 🎜🎜Avec l'exemple de code ci-dessus, nous pouvons utiliser les identités fédérées AWS Cognito pour implémenter la fonctionnalité d'authentification dans les applications PHP. De cette façon, nos utilisateurs peuvent se connecter à nos applications en utilisant leurs comptes préférés, offrant ainsi une meilleure expérience utilisateur et une meilleure sécurité. 🎜

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