Pengesahan PHP selamat menggunakan AWS Cognito Federated Identities
Pengesahan pengguna ialah komponen penting semasa membina aplikasi web. AWS Cognito Federated Identities ialah penyelesaian berkuasa yang boleh membantu kami melaksanakan fungsi pengesahan dan kebenaran.
AWS Cognito Federated Identities membolehkan kami membuat pengesahan menggunakan berbilang pembekal identiti, termasuk Amazon, Facebook, Google, Apple dan banyak lagi. Ini membolehkan pengguna log masuk ke aplikasi kami menggunakan akaun pilihan mereka.
Di bawah ini kami akan menggunakan kod PHP untuk melaksanakan fungsi pengesahan AWS Cognito Federated Identities.
Pertama, kita perlu mencipta kumpulan identiti AWS Cognito pada konsol AWS. Buka AWS Management Console dan pilih Cognito, kemudian buat kumpulan identiti baharu. Semasa proses penciptaan, kita perlu menetapkan pengecam unik kepada kumpulan identiti, seperti "myapp-identity-pool".
Selepas mencipta kumpulan identiti, kami perlu mendapatkan ID kumpulan identiti dan ARN peranan kumpulan identiti Maklumat ini akan digunakan dalam kod PHP kami.
Seterusnya, kita perlu memasang AWS SDK untuk PHP melalui komposer. Beralih ke direktori projek pada baris arahan dan jalankan arahan berikut:
composer require aws/aws-sdk-php
Setelah pemasangan selesai, kita boleh mula menulis kod 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; } }
Dalam kod di atas, kami mula-mula memperkenalkan AWS SDK untuk PHP dan mengkonfigurasi maklumat pensijilan AWS. Seterusnya, kami mencipta contoh CognitoIdentityProviderClient untuk berkomunikasi dengan perkhidmatan AWS Cognito.
Fungsi adminInitiateAuth
untuk melaksanakan pengesahan log masuk pengguna dan hasil yang dikembalikan mengandungi token pengesahan. Fungsi login
函数用于用户登录验证,接受用户名和密码作为参数,并返回一个身份验证令牌。在这个函数中,我们调用 adminInitiateAuth
方法来进行用户登录验证,并返回的结果中包含了一个身份验证令牌。
verifyToken
函数用于验证令牌的有效性,接受一个身份验证令牌作为参数,并返回一个布尔值表示是否验证成功。在这个函数中,我们调用 getUser
方法来获取令牌对应的用户信息,并判断是否存在该用户。
现在我们可以在我们的应用程序中使用以上定义的函数来实现身份验证功能了。
$token = login('testuser', 'password123'); if ($token) { // 用户登录成功,进行其他操作 // 例如保存用户登录状态、跳转到其他页面等 } else { // 用户登录失败,显示登录错误提示 echo 'Login failed!'; }
以上示例代码中,我们使用了一个测试用户进行登录,并调用了 login
verifyToken
digunakan untuk mengesahkan kesahihan token, menerima token pengesahan sebagai parameter dan mengembalikan nilai Boolean yang menunjukkan sama ada pengesahan berjaya. Dalam fungsi ini, kami memanggil kaedah getUser
untuk mendapatkan maklumat pengguna yang sepadan dengan token dan menentukan sama ada pengguna itu wujud. Kini kami boleh menggunakan fungsi yang ditakrifkan di atas untuk melaksanakan fungsi pengesahan dalam aplikasi kami. 🎜rrreee🎜Dalam kod contoh di atas, kami menggunakan pengguna ujian untuk log masuk dan memanggil fungsi Atas ialah kandungan terperinci Melaksanakan pengesahan keselamatan PHP menggunakan AWS Cognito Federated Identities. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!