透過 AWS Cognito 實現 PHP 安全驗證
AWS Cognito 是一個使用者驗證和授權服務,可協助開發人員輕鬆實現應用程式的使用者管理和身分驗證功能。在本文中,我們將學習如何使用 AWS Cognito 配合 PHP 實作安全驗證功能。我們將透過編寫程式碼範例來演示具體的實作步驟。
前提條件
為了成功實現本文中描述的功能,您需要滿足以下前提條件:
步驟1:建立使用者池(User Pool)
首先,我們需要在 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 的使用者池,啟用了電子郵件驗證,且密碼必須符合指定的規則。
步驟2:設定用戶集用戶端(User Pool Client)
接下來,我們需要為我們的應用程式建立一個用戶集用戶端,以便在應用程式中使用該用戶端進行用戶身份驗證。您可以使用 AWS CLI 或 AWS 管理主控台來建立使用者池用戶端。以下是使用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天。
步驟3:PHP 程式碼實作驗證
現在,我們已經建立了使用者集區和使用者集區用戶端,接下來,我們將編寫 PHP 程式碼來實作驗證功能。
首先,我們需要引入 AWS SDK for PHP。您可以透過 composer 進行安裝,或直接下載並引入 AWS SDK for PHP 的原始程式碼。
require 'vendor/autoload.php'; // 引入 AWS SDK for PHP 的自动加载文件 use AwsCognitoIdentityProviderCognitoIdentityProviderClient;
然後,我們需要設定 AWS Cognito 存取憑證。您可以在 AWS 管理主控台中找到您的使用者池 ID、使用者池用戶端 ID 和 AWS 地區(Region)訊息,並取代下列程式碼中的對應值。
$poolId = 'YOUR_USER_POOL_ID'; $clientId = 'YOUR_USER_POOL_CLIENT_ID'; $region = 'YOUR_AWS_REGION';
接下來,我們需要實例化 CognitoIdentityProviderClient 並設定對應的配置。
$client = new CognitoIdentityProviderClient([ 'version' => 'latest', 'region' => $region ]); $client->setCredentials([ 'key' => 'YOUR_AWS_ACCESS_KEY_ID', 'secret' => 'YOUR_AWS_SECRET_ACCESS_KEY' ]);
現在,我們已經準備好進行身份驗證了。接下來的程式碼片段示範如何透過 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
方法進行驗證。您需要替換 'USERNAME'
和 'PASSWORD'
的值為您的實際使用者名稱和密碼。成功驗證後,$result
變數將包含身份驗證結果。
結論
透過本文,我們學習如何使用 AWS Cognito 實作 PHP 安全驗證功能。我們透過建立使用者池和使用者池客戶端,然後使用 PHP 程式碼進行身份驗證。 AWS Cognito 提供了一種簡單且強大的方式來管理使用者憑證和實現身份驗證,使我們的應用程式更安全可靠。
以上是透過 AWS Cognito 實現 PHP 安全驗證的詳細內容。更多資訊請關注PHP中文網其他相關文章!