AWS Cognitoは、開発者がアプリケーションのユーザー管理と認証機能を簡単に実装するのに役立つ強力な認証および承認サービスです。この記事では、AWS Cognitoを使用してPHPと統合してセキュリティ検証を実装し、コードの例で実装プロセスを詳細に説明する方法を示します。
開始する前に、次の前提条件を満たしていることを確認してください。
まず、AWS Cognitoのユーザープールを作成して、ユーザーの資格情報を保存および管理します。 AWS CLIまたはAWS管理コンソールを使用して、ユーザープールを作成できます。 AWS CLIを使用してユーザープールを作成するためのコマンドの例を次に示します。
aws cognito-idp create-user-pool --pool-name MyUserPool --auto-verified-attributes email --policies PasswordPolicies=RequiredLength=8,RequireUppercase=true,RequireLowercase=true,RequireNumbers=true,RequireSymbols=true --schema Name=email,AttributeDataType=Email:STRING,Required=true,Name=phone_number,AttributeDataType=Number:STRING,Required=false
このコマンドは、「myuserpool」という名前のユーザープールを作成し、電子メールの確認を有効にし、パスワードは指定されたルールを満たす必要があります。
次に、アプリケーションがCognitoユーザープールと対話するために、ユーザープールクライアントを作成する必要があります。これは、AWS CLIまたは管理コンソールを介して実行できます。 AWS CLIを使用してユーザープールクライアントを作成するためのコマンドの例を次に示します。
aws cognito-idp create-user-pool-client --user-pool-id YOUR_USER_POOL_ID --client-name MyUserPoolClient --no-generate-secret --explicit-auth-flows ALLOW_REFRESH_TOKEN_AUTH --refresh-token-validity 30
このコマンドは、「myuserpoolclient」という名前のユーザープールクライアントを作成し、30日の有効期間を持つ更新トークンを介して認証を許可します。
ユーザープールとクライアントをセットアップしたので、ユーザー認証を実装するためにPHPコードを作成できます。まず、PHPにAWS SDKを導入する必要があります。 Composerを介してインストールするか、SDKソースコードを直接ダウンロードして導入できます。
require 'vendor/autoload.php'; // 紹介された AWS SDK for PHP ファイルを自動的に読み込みます
use Aws\CognitoIdentityProvider\CognitoIdentityProviderClient;
次に、AWS Cognito Access資格情報を構成します。実際の値については、次のコードについて次のコードで、 `your_user_pool_id`、` your_user_pool_client_id`、および `your_aws_region`を置き換えます。
$poolId = 'YOUR_USER_POOL_ID';
$clientId = 'YOUR_USER_POOL_CLIENT_ID';
$region = 'YOUR_AWS_REGION';
次に、CognitoDidentityProviderClientをインスタンス化し、資格情報を構成します。
$client = new CognitoIdentityProviderClient([
'version' => 'latest',
'region' => $region
]);
$client->setCredentials([
'key' => 'YOUR_AWS_ACCESS_KEY_ID',
'secret' => 'YOUR_AWS_SECRET_ACCESS_KEY',
]);
認証にCognitoを使用できるようになりました。次のコードスニペットは、AWS Cognitoで認証する方法を示しています。
$result = $client->adminInitiateAuth([
'UserPoolId' => $poolId,
'ClientId' => $clientId,
'AuthFlow' => 'ADMIN_NO_SRP_AUTH',
'AuthParameters' => [
'USERNAME' => 'testuser@example.com',
'PASSWORD' => 'P@ssw0rd'
]
]);
var_dump($result);
上記のコードでは、認証に「admininitiateauth」方法を使用します。 「ユーザー名」と「パスワード」を実際のユーザー名とパスワードに置き換えてください。検証が成功した後、「$ respros」には検証の結果が含まれます。
この記事を通して、安全なユーザー認証のためにAWS CognitoをPHPに統合する方法を学びます。ユーザープールの作成、クライアントのセットアップ、PHPコードを使用して認証を有効にすることにより、アプリケーションに強力なユーザー管理機能を提供することができます。 AWS Cognitoは、アプリケーションのセキュリティと信頼性を向上させるシンプルで安全なソリューションです。