Keycloak을 사용하여 PHP 보안 확인 구현
인용문:
웹 애플리케이션이 성장하고 다양해짐에 따라 사용자 데이터 및 신원의 보안을 보호하는 것이 중요해졌습니다. 안전한 인증을 달성하기 위해 OAuth 및 OpenID Connect와 같은 표준을 기반으로 인증 및 권한 부여 체계를 구현해야 하는 경우가 많습니다. Keycloak은 통합 인증 및 권한 부여 서비스를 제공하는 오픈 소스 ID 및 액세스 관리 솔루션입니다. 이 문서에서는 Keycloak을 사용하여 PHP 기반 보안 인증을 구현하는 방법을 설명하고 해당 코드 예제를 제공합니다.
1. Keycloak 서버 설정
먼저 서버에 Keycloak을 설정해야 합니다. Keycloak 공식 웹사이트(https://www.keycloak.org/)를 통해 해당 설치 패키지를 다운로드하고, 공식 문서의 단계에 따라 설치 및 구성할 수 있습니다.
2. Keycloak 클라이언트 생성
Keycloak 관리 인터페이스에서 새 Realm(영역)을 생성한 후 Realm 아래에 새 클라이언트(클라이언트)를 생성합니다. 클라이언트 구성에서 올바른 리디렉션 URI와 유효한 클라이언트 자격 증명, 선택적으로 기타 관련 옵션을 구성합니다.
3. OAuth 클라이언트 라이브러리 설치
PHP 프로젝트에서 Keycloak의 인증 및 권한 부여 메커니즘을 사용하기 위해 일부 타사 OAuth 클라이언트 라이브러리를 사용할 수 있습니다. 본 글에서는 "OAuth 2.0 Client" 오픈소스 라이브러리(https://github.com/thephpleague/oauth2-client)를 사용하겠습니다.
먼저 Composer를 사용하여 라이브러리를 설치합니다.
composer require league/oauth2-client
설치가 완료되면 PHP 코드 작성을 시작할 수 있습니다.
4. PHP 코드 예시
PHP 코드에서는 Keycloak의 클라이언트 자격 증명과 리디렉션 URI를 구성해야 합니다. 그런 다음 Keycloak의 인증 코드, 토큰 및 사용자 정보를 획득하여 신원 인증 및 권한 확인을 구현할 수 있습니다.
// 引入 OAuth 2.0 Client 库 require_once('vendor/autoload.php'); use LeagueOAuth2ClientProviderKeycloak; // Keycloak 客户端凭证和重定向 URI $clientId = 'YOUR_CLIENT_ID'; $clientSecret = 'YOUR_CLIENT_SECRET'; $redirectUri = 'http://localhost/callback.php'; // 创建 Keycloak 提供程序 $provider = new Keycloak([ 'authServerUrl' => 'http://localhost:8080/auth', 'realm' => 'YOUR_REALM', 'clientId' => $clientId, 'clientSecret' => $clientSecret, 'redirectUri' => $redirectUri ]); // 获取授权码 if (!isset($_GET['code'])) { $authUrl = $provider->getAuthorizationUrl(); $_SESSION['oauth2state'] = $provider->getState(); header('Location: ' . $authUrl); exit; } // 验证授权码 if (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) { unset($_SESSION['oauth2state']); exit('Invalid state'); } // 授权码授权 $token = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); // 使用令牌获取用户信息 $user = $provider->getResourceOwner($token); // 打印用户信息 echo 'Logged in as ' . $user->getName(); // 使用令牌调用 Keycloak API $response = $provider->getHttpClient()->get( 'http://localhost:8080/auth/realms/YOUR_REALM/protocol/openid-connect/userinfo', [ 'headers' => [ 'Authorization' => 'Bearer ' . $token->getToken() ] ] ); $data = json_decode($response->getBody(), true); // 打印用户信息 print_r($data);
코드 설명:
5. 요약
Keycloak을 사용하여 PHP 보안 검증을 구현하는 것은 안전하고 신뢰할 수 있는 방법입니다. Keycloak 클라이언트를 구성하고 OAuth 2.0 클라이언트 라이브러리와 결합하면 Keycloak 기반 인증 및 권한 확인을 쉽게 구현할 수 있습니다.
위는 기본 예시이므로 필요에 따라 확장하고 맞춤설정할 수 있습니다. 이 기사가 Keycloak 및 PHP 보안 유효성 검사를 이해하는 데 도움이 되었기를 바랍니다.
참조 링크:
위 내용은 Keycloak을 사용하여 PHP 보안 확인 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!