>  기사  >  백엔드 개발  >  Keycloak을 사용하여 PHP 보안 확인 구현

Keycloak을 사용하여 PHP 보안 확인 구현

王林
王林원래의
2023-07-26 22:45:201969검색

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

코드 설명:

  • 먼저 OAuth 2.0 클라이언트 라이브러리를 소개하고 Keycloak 공급자를 만듭니다.
  • 그런 다음 인증 코드가 획득되었는지 확인합니다. 그렇지 않은 경우 Keycloak 인증 페이지로 리디렉션됩니다.
  • 인증 코드를 획득한 후, 인증 코드의 유효성을 확인하고 인증 코드를 통해 토큰을 획득합니다.
  • 토큰을 사용하여 사용자 정보를 얻고 해당 작업을 수행합니다.

5. 요약
Keycloak을 사용하여 PHP 보안 검증을 구현하는 것은 안전하고 신뢰할 수 있는 방법입니다. Keycloak 클라이언트를 구성하고 OAuth 2.0 클라이언트 라이브러리와 결합하면 Keycloak 기반 인증 및 권한 확인을 쉽게 구현할 수 있습니다.

위는 기본 예시이므로 필요에 따라 확장하고 맞춤설정할 수 있습니다. 이 기사가 Keycloak 및 PHP 보안 유효성 검사를 이해하는 데 도움이 되었기를 바랍니다.

참조 링크:

  • Keycloak 공식 홈페이지: https://www.keycloak.org/
  • OAuth 2.0 클라이언트 오픈소스 라이브러리: https://github.com/thephpleague/oauth2-client

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

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