Maison  >  Article  >  développement back-end  >  Implémentation de la vérification de sécurité PHP à l'aide de Keycloak

Implémentation de la vérification de sécurité PHP à l'aide de Keycloak

王林
王林original
2023-07-26 22:45:201785parcourir

Utilisez Keycloak pour implémenter la vérification de sécurité PHP

Citation :
À mesure que les applications Web se développent et se diversifient, la protection de la sécurité des données et des identités des utilisateurs est devenue essentielle. Afin de parvenir à une authentification sécurisée, nous devons souvent mettre en œuvre des schémas d'authentification et d'autorisation basés sur des normes telles que OAuth et OpenID Connect. Keycloak est une solution open source de gestion des identités et des accès qui fournit des services d'authentification et d'autorisation unifiés. Cet article explique comment utiliser Keycloak pour implémenter l'authentification de sécurité basée sur PHP et fournit des exemples de code correspondants.

1. Configurer le serveur Keycloak
Tout d'abord, nous devons configurer Keycloak sur le serveur. Vous pouvez télécharger le package d'installation correspondant via le site officiel de Keycloak (https://www.keycloak.org/) et suivre les étapes de la documentation officielle pour l'installer et le configurer.

2. Créer un client Keycloak
Sur l'interface de gestion Keycloak, créez un nouveau domaine (domaine), puis créez un nouveau client (Client) sous le domaine. Dans la configuration du client, configurez l'URI de redirection correct et les informations d'identification client valides, ainsi que éventuellement d'autres options associées.

3. Installez la bibliothèque client OAuth
Afin d'utiliser le mécanisme d'authentification et d'autorisation de Keycloak dans les projets PHP, nous pouvons utiliser certaines bibliothèques client OAuth tierces. Dans cet article, nous utiliserons la bibliothèque open source « OAuth 2.0 Client » (https://github.com/thephpleague/oauth2-client).

Tout d'abord, installez la bibliothèque à l'aide de Composer :

composer require league/oauth2-client

Une fois l'installation terminée, nous pouvons commencer à écrire du code PHP.

4. Exemple de code PHP
Dans le code PHP, nous devons configurer les informations d'identification du client Keycloak et rediriger l'URI. Ensuite, nous pouvons mettre en œuvre l'authentification d'identité et la vérification d'autorisation en obtenant le code d'autorisation, le jeton et les informations utilisateur de 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);

Description du code :

  • Tout d'abord, nous introduisons la bibliothèque client OAuth 2.0 et créons le fournisseur Keycloak.
  • Ensuite, nous déterminons si le code d'autorisation a été obtenu, et sinon, redirigeons vers la page d'authentification Keycloak.
  • Après avoir obtenu le code d'autorisation, nous vérifions la validité du code d'autorisation et obtenons le jeton via le code d'autorisation.
  • Utilisez le jeton pour obtenir des informations sur l'utilisateur et effectuer les opérations correspondantes.

5. Résumé
Utiliser Keycloak pour implémenter la vérification de sécurité PHP est un moyen sûr et fiable. En configurant le client Keycloak et en le combinant avec la bibliothèque client OAuth 2.0, nous pouvons facilement implémenter l'authentification et la vérification des autorisations basées sur Keycloak.

Ce qui précède est un exemple de base, vous pouvez l'étendre et le personnaliser en fonction de vos besoins. J'espère que cet article a été utile pour comprendre la validation de sécurité Keycloak et PHP.

Lien de référence :

  • Site officiel de Keycloak : https://www.keycloak.org/
  • Bibliothèque open source client OAuth 2.0 : https://github.com/thephpleague/oauth2-client

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn