>  기사  >  백엔드 개발  >  AWS Cognito 연동 자격 증명을 사용하여 PHP 보안 인증 구현

AWS Cognito 연동 자격 증명을 사용하여 PHP 보안 인증 구현

PHPz
PHPz원래의
2023-07-24 13:25:55685검색

AWS Cognito 연동 자격 증명을 사용한 보안 PHP 인증

사용자 인증은 웹 애플리케이션을 구축할 때 중요한 구성 요소입니다. AWS Cognito 연동 자격 증명은 인증 및 권한 부여 기능을 구현하는 데 도움이 되는 강력한 솔루션입니다.

AWS Cognito 연동 자격 증명을 사용하면 Amazon, Facebook, Google, Apple 등을 포함한 여러 자격 증명 공급자를 사용하여 인증할 수 있습니다. 이를 통해 사용자는 선호하는 계정을 사용하여 애플리케이션에 로그인할 수 있습니다.

아래에서는 PHP 코드를 사용하여 AWS Cognito 연동 자격 증명의 인증 기능을 구현하겠습니다.

먼저 AWS 콘솔에서 AWS Cognito 자격 증명 풀을 생성해야 합니다. AWS Management Console을 열고 Cognito를 선택한 후 새 자격 증명 풀을 생성합니다. 생성 프로세스 중에 "myapp-identity-pool"과 같은 고유 식별자를 자격 증명 풀에 할당해야 합니다.

자격 증명 풀을 생성한 후 자격 증명 풀의 자격 증명 풀 ID와 역할 ARN을 가져와야 합니다. 이 정보는 PHP 코드에서 사용됩니다.

다음으로 Composer를 통해 PHP용 AWS SDK를 설치해야 합니다. 명령줄에서 프로젝트 디렉터리로 전환하고 다음 명령을 실행합니다.

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;
    }
}

위 코드에서는 먼저 PHP용 AWS SDK를 도입하고 AWS 인증 정보를 구성했습니다. 다음으로 AWS Cognito 서비스와 통신하기 위해 CognitoIdentityProviderClient 인스턴스를 생성했습니다.

login 함수는 사용자 로그인 확인에 사용되며 사용자 이름과 비밀번호를 매개변수로 받아들이고 인증 토큰을 반환합니다. 이 함수에서는 adminInitiateAuth 메소드를 호출하여 사용자 로그인 확인을 수행하고 반환된 결과에는 인증 토큰이 포함됩니다. login 函数用于用户登录验证,接受用户名和密码作为参数,并返回一个身份验证令牌。在这个函数中,我们调用 adminInitiateAuth 方法来进行用户登录验证,并返回的结果中包含了一个身份验证令牌。

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

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

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

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

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

verifyToken 함수는 토큰의 유효성을 확인하는 데 사용되며 인증 토큰을 매개변수로 허용하고 확인 성공 여부를 나타내는 부울 값을 반환합니다. 이 함수에서는 getUser 메소드를 호출하여 토큰에 해당하는 사용자 정보를 얻고 해당 사용자가 있는지 확인합니다.

이제 위에서 정의한 함수를 사용하여 애플리케이션에 인증 기능을 구현할 수 있습니다. 🎜rrreee🎜위 예제 코드에서는 테스트 사용자를 사용하여 로그인하고 인증을 위해 login 함수를 호출했습니다. 반환된 인증 토큰이 비어 있지 않으면 로그인이 성공한 것입니다. 🎜🎜위의 코드 예제를 사용하면 AWS Cognito 연동 자격 증명을 사용하여 PHP 애플리케이션에서 인증 기능을 구현할 수 있습니다. 이러한 방식으로 사용자는 선호하는 계정을 사용하여 애플리케이션에 로그인할 수 있어 더 나은 사용자 경험과 보안을 제공할 수 있습니다. 🎜

위 내용은 AWS Cognito 연동 자격 증명을 사용하여 PHP 보안 인증 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.