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 サイトの他の関連記事を参照してください。