웹 애플리케이션에서 OAuth2 인증은 널리 사용되는 표준이 되었으며, 이를 통해 사용자는 인증 서버를 사용하여 타사 애플리케이션이 보호된 리소스에 액세스하고 운영할 수 있습니다. ThinkPHP6은 모든 유형의 애플리케이션에 적합한 빠르고 현대적인 PHP 프레임워크로 OAuth2 인증을 구현하는 사용하기 쉽고 강력한 도구를 제공합니다. 이 기사에서는 ThinkPHP6을 사용하여 OAuth2 인증을 구현하는 방법을 살펴보겠습니다.
1단계: ThinkPHP6 설치
ThinkPHP6 사용을 시작하려면 먼저 로컬 환경에 Composer를 설치해야 합니다. 프로젝트 디렉토리에서 터미널이나 명령줄 창을 열고 다음 명령을 실행하세요:
composer create-project topthink/think oauth2
이렇게 하면 프로젝트 디렉토리에 oauth2라는 새 디렉토리가 생성되고 해당 디렉토리에 필요한 모든 ThinkPHP6 구성 요소가 설치됩니다.
2단계: PHP-JWT 설치
ThinkPHP6 OAuth2 인증은 JWT(JSON 웹 토큰)를 생성하고 검증하기 위한 PHP 라이브러리인 PHP-JWT를 사용합니다. 그 전에 먼저 PHP-JWT 라이브러리를 설치해야 합니다. 터미널 또는 명령줄 창에서 다음 명령을 실행합니다.
composer require firebase/php-jwt
3단계: OAuth2 서비스 공급자 만들기
OAuth2 서비스 공급자를 사용하면 타사 애플리케이션이 인증을 통해 보호된 리소스에 액세스할 수 있습니다. ThinkPHP6에서는 OAuth2 서비스 제공자가 추상 클래스 thinkoauthproviderAbstractProvider를 기반으로 구현됩니다. OAuth2 서비스 제공자를 생성하고 다음 메소드를 구현해야 합니다.
다음은 간단한 OAuth2 서비스 제공자 예입니다.
<?php namespace appoauthprovider; use FirebaseJWTJWT; use thinkoauthproviderAbstractProvider; class SampleProvider extends AbstractProvider { public function getClientId(): string { return 'YOUR_CLIENT_ID'; } public function getClientSecret(): string { return 'YOUR_CLIENT_SECRET'; } public function getAuthorizationUrl(): string { $authUrl = 'https://your.auth.server/auth?' . 'client_id=' . $this->getClientId() . '&redirect_uri=' . urlencode($this->getRedirectUri()) . '&response_type=code'; return $authUrl; } public function validateAuthorizationCode(string $code): ?array { $payload = JWT::decode($code, $this->getClientSecret(), array('HS256')); // Check if payload is valid return $payload; } public function refreshToken(string $refreshToken): ?array { // Implement refresh token logic return null; } }
4단계: OAuth2 인증 미들웨어 구현
이제 애플리케이션 OAuth2에서 이를 구현해야 합니다. 인증 미들웨어. ThinkPHP6에서 미들웨어는 추상 클래스 thinkmiddlewareMiddleware 및 thinksessionSessionManager를 기반으로 구현됩니다. 미들웨어를 생성하고 다음 메소드를 구현해야 합니다.
다음은 간단한 OAuth2 인증 미들웨어 예입니다.
<?php namespace appmiddleware; use appoauthproviderSampleProvider; use FirebaseJWTJWT; class OAuth2Middleware { public function handle( hinkRequest $request, Closure $next) { $provider = new SampleProvider(); // Check if access token exists $accessToken = $request->header('Authorization'); if (!$accessToken) { // Redirect to auth server $authUrl = $provider->getAuthorizationUrl(); return redirect($authUrl); } // Verify access token $jwtSecret = $provider->getClientSecret(); $verify = JWT::decode($accessToken, $jwtSecret, array('HS256')); // Check if token is valid if (!$verify) { return json(array( 'error' => 'Invalid token', )); } // Set user in session $session = hinkacadeSession::get('user'); $session['id'] = $verify['id']; hinkacadeSession::set('user', $session); // Go to next middleware return $next($request); } }
위의 미들웨어 구현 로직은 다음과 같습니다.
5단계: OAuth2 인증 미들웨어 등록
이제 OAuth2 인증 미들웨어를 애플리케이션의 글로벌 미들웨어로 등록해야 합니다. configmiddleware.php 파일에 다음 코드를 추가하세요:
<?php return [ 'oauth2' => ppmiddlewareOAuth2Middleware::class, ];
이제 ThinkPHP6을 사용하여 OAuth2 인증을 구현하는 모든 단계를 완료했습니다. 애플리케이션에서 OAuth2 인증 미들웨어를 사용하여 승인된 리소스에 대한 액세스가 필요한 경로 또는 컨트롤러 작업을 보호할 수 있습니다. OAuth2 인증 미들웨어를 사용하면 토큰 기반 인증 메커니즘을 사용하여 사용자 데이터와 민감한 API 엔드포인트를 보호할 수 있습니다. ThinkPHP6이 제공하는 사용 편의성과 강력한 성능을 활용하여 안전한 고성능 웹 애플리케이션을 개발하세요.
위 내용은 ThinkPHP6을 사용하여 OAuth2 인증을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!