Keycloak を使用した PHP セキュリティ認証の実装
はじめに:
Web アプリケーションの成長と多様化に伴い、ユーザーのデータと ID の保護が重要になってきました。安全な認証を実現するには、多くの場合、OAuth や OpenID Connect などの標準に基づいた認証および認可スキームを実装する必要があります。 Keycloak は、統合された認証および認可サービスを提供するオープンソースの ID およびアクセス管理ソリューションです。この記事では、Keycloak を使用して PHP ベースのセキュリティ認証を実装する方法を紹介し、対応するコード例を示します。
1. Keycloak サーバーのセットアップ
まず、サーバー上に Keycloak をセットアップする必要があります。 Keycloak の公式 Web サイト (https://www.keycloak.org/) から対応するインストール パッケージをダウンロードし、公式ドキュメントの手順に従ってインストールして構成できます。
2. Keycloak クライアントの作成
Keycloak 管理インターフェイスで、新しいレルム (レルム) を作成し、そのレルムの下に新しいクライアント (クライアント) を作成します。クライアント構成で、正しいリダイレクト 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 中国語 Web サイトの他の関連記事を参照してください。