Melaksanakan pengesahan keselamatan PHP menggunakan AWS Cognito Federated Identities

PHPz
Lepaskan: 2023-07-24 13:28:02
asal
782 orang telah melayarinya

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
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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 log masuk digunakan untuk pengesahan log masuk pengguna, menerima nama pengguna dan kata laluan sebagai parameter dan mengembalikan token pengesahan. Dalam fungsi ini, kami memanggil kaedah 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!';
}
Salin selepas log masuk

以上示例代码中,我们使用了一个测试用户进行登录,并调用了 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 log masuk untuk pengesahan. Jika token pengesahan yang dikembalikan tidak kosong, log masuk berjaya. 🎜🎜Dengan contoh kod di atas, kami boleh menggunakan AWS Cognito Federated Identities untuk melaksanakan fungsi pengesahan dalam aplikasi PHP. Dengan cara ini, pengguna kami boleh log masuk ke aplikasi kami menggunakan akaun pilihan mereka, memberikan pengalaman dan keselamatan pengguna yang lebih baik. 🎜

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!