ホームページ  >  記事  >  バックエンド開発  >  AWS Cognito Federated Identities を使用した PHP セキュリティ認証の実装

AWS Cognito Federated Identities を使用した PHP セキュリティ認証の実装

PHPz
PHPzオリジナル
2023-07-24 13:25:55783ブラウズ

AWS Cognito Federated Identities を使用した PHP セキュリティ認証の実装

ユーザー認証は、Web アプリケーションを構築する際の重要なコンポーネントです。 AWS Cognito Federated Identities は、認証および認可機能の実装に役立つ強力なソリューションです。

AWS Cognito Federated Identities を使用すると、Amazon、Facebook、Google、Apple などの複数の ID プロバイダーを使用して認証できます。これにより、ユーザーは好みのアカウントを使用してアプリケーションにログインできるようになります。

以下では、PHP コードを使用して、AWS Cognito Federated Identities の認証機能を実装します。

まず、AWS コンソールで AWS Cognito ID プールを作成する必要があります。 AWS マネジメント コンソールを開き、[Cognito] を選択して、新しい ID プールを作成します。作成プロセス中に、「myapp-identity-pool」などの一意の識別子を ID プールに割り当てる必要があります。

ID プールを作成した後、ID プール ID と ID プールのロール ARN を取得する必要があります。この情報は PHP コードで使用されます。

次に、composer を介して AWS SDK for PHP をインストールする必要があります。コマンド ラインでプロジェクト ディレクトリに切り替え、次のコマンドを実行します。

composer require aws/aws-sdk-php

インストールが完了したら、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;
    }
}

上記のコードでは、まず AWS SDK for PHP を導入し、AWS 認定情報を設定しました。次に、AWS Cognito サービスと通信するための CognitoIdentityProviderClient インスタンスを作成しました。

login この関数はユーザーのログイン検証に使用され、ユーザー名とパスワードをパラメータとして受け取り、認証トークンを返します。この関数では、adminInitiateAuth メソッドを呼び出してユーザーのログイン検証を実行し、返された結果には認証トークンが含まれています。

verifyToken この関数はトークンの有効性を検証するために使用され、認証トークンをパラメータとして受け入れ、検証が成功したかどうかを示すブール値を返します。この関数では、getUser メソッドを呼び出して、トークンに対応するユーザー情報を取得し、ユーザーが存在するかどうかを判断します。

これで、上で定義した関数を使用して、アプリケーションに認証機能を実装できるようになります。

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

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

上記のサンプル コードでは、テスト ユーザーを使用してログインし、認証のために login 関数を呼び出しました。返された認証トークンが空でない場合、ログインは成功します。

上記のコード例では、AWS Cognito Federated Identities を使用して、PHP アプリケーションに認証機能を実装できます。このようにして、ユーザーは好みのアカウントを使用してアプリケーションにログインできるため、より優れたユーザー エクスペリエンスとセキュリティが提供されます。

以上がAWS Cognito Federated Identities を使用した PHP セキュリティ認証の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。