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 :
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 :
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!