Heim  >  Artikel  >  Backend-Entwicklung  >  Implementierung der PHP-Sicherheitsauthentifizierung mit AWS Cognito Federated Identities

Implementierung der PHP-Sicherheitsauthentifizierung mit AWS Cognito Federated Identities

PHPz
PHPzOriginal
2023-07-24 13:25:55683Durchsuche

Sichere PHP-Authentifizierung mit AWS Cognito Federated Identities

Die Benutzerauthentifizierung ist eine wichtige Komponente beim Erstellen von Webanwendungen. AWS Cognito Federated Identities ist eine leistungsstarke Lösung, die uns bei der Implementierung von Authentifizierungs- und Autorisierungsfunktionen helfen kann.

AWS Cognito Federated Identities ermöglicht uns die Authentifizierung über mehrere Identitätsanbieter, darunter Amazon, Facebook, Google, Apple und mehr. Dadurch können sich Benutzer mit ihrem bevorzugten Konto bei unserer Anwendung anmelden.

Im Folgenden verwenden wir PHP-Code, um die Authentifizierungsfunktion von AWS Cognito Federated Identities zu implementieren.

Zuerst müssen wir einen AWS Cognito-Identitätspool auf der AWS-Konsole erstellen. Öffnen Sie die AWS-Managementkonsole, wählen Sie Cognito und erstellen Sie dann einen neuen Identitätspool. Während des Erstellungsprozesses müssen wir dem Identitätspool eine eindeutige Kennung zuweisen, z. B. „myapp-identity-pool“.

Nachdem wir den Identitätspool erstellt haben, müssen wir die Identitätspool-ID und den Rollen-ARN des Identitätspools abrufen. Diese Informationen werden in unserem PHP-Code verwendet.

Als nächstes müssen wir AWS SDK für PHP über Composer installieren. Wechseln Sie in der Befehlszeile in das Projektverzeichnis und führen Sie den folgenden Befehl aus:

composer require aws/aws-sdk-php

Sobald die Installation abgeschlossen ist, können wir mit dem Schreiben von PHP-Code beginnen.

// 引入 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;
    }
}

Im obigen Code haben wir zunächst das AWS SDK für PHP eingeführt und die AWS-Zertifizierungsinformationen konfiguriert. Als Nächstes haben wir eine CognitoIdentityProviderClient-Instanz erstellt, um mit dem AWS Cognito-Dienst zu kommunizieren.

login-Funktion wird zur Überprüfung der Benutzeranmeldung verwendet, akzeptiert Benutzernamen und Passwort als Parameter und gibt ein Authentifizierungstoken zurück. In dieser Funktion rufen wir die Methode adminInitiateAuth auf, um eine Überprüfung der Benutzeranmeldung durchzuführen, und das zurückgegebene Ergebnis enthält ein Authentifizierungstoken. login 函数用于用户登录验证,接受用户名和密码作为参数,并返回一个身份验证令牌。在这个函数中,我们调用 adminInitiateAuth 方法来进行用户登录验证,并返回的结果中包含了一个身份验证令牌。

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

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

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

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

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

verifyToken-Funktion wird verwendet, um die Gültigkeit des Tokens zu überprüfen, akzeptiert ein Authentifizierungstoken als Parameter und gibt einen booleschen Wert zurück, der angibt, ob die Überprüfung erfolgreich war. In dieser Funktion rufen wir die Methode getUser auf, um die dem Token entsprechenden Benutzerinformationen abzurufen und festzustellen, ob der Benutzer existiert.

Jetzt können wir die oben definierte Funktion verwenden, um die Authentifizierungsfunktionalität in unserer Anwendung zu implementieren. 🎜rrreee🎜Im obigen Beispielcode haben wir einen Testbenutzer zum Anmelden verwendet und die Funktion login zur Authentifizierung aufgerufen. Wenn das zurückgegebene Authentifizierungstoken nicht leer ist, ist die Anmeldung erfolgreich. 🎜🎜Mit dem obigen Codebeispiel können wir AWS Cognito Federated Identities verwenden, um Authentifizierungsfunktionen in PHP-Anwendungen zu implementieren. Auf diese Weise können sich unsere Benutzer mit ihren bevorzugten Konten bei unseren Anwendungen anmelden, was für eine bessere Benutzererfahrung und Sicherheit sorgt. 🎜

Das obige ist der detaillierte Inhalt vonImplementierung der PHP-Sicherheitsauthentifizierung mit AWS Cognito Federated Identities. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn