ホームページ >バックエンド開発 >PHPチュートリアル >Keycloakを使用したPHPセキュリティ検証の実装

Keycloakを使用したPHPセキュリティ検証の実装

王林
王林オリジナル
2023-07-26 22:45:201978ブラウズ

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

コードの説明:

  • まず、OAuth 2.0 クライアント ライブラリを導入し、Keycloak プロバイダーを作成します。
  • 次に、認証コードが取得されたかどうかを判断し、取得されていない場合は Keycloak 認証ページにリダイレクトします。
  • 認可コードを取得した後、認可コードの正当性を検証し、認可コードを介してトークンを取得します。
  • トークンを使用してユーザー情報を取得し、対応する操作を実行します。

5. 概要
Keycloak を使用して PHP セキュリティ検証を実装することは、安全で信頼できる方法です。 Keycloak クライアントを構成し、OAuth 2.0 クライアント ライブラリと組み合わせることで、Keycloak ベースの認証と認可検証を簡単に実装できます。

上記は基本的な例であり、独自のニーズに応じて拡張およびカスタマイズできます。この記事が Keycloak と PHP のセキュリティ検証を理解するのに役立つことを願っています。

参考リンク:

  • Keycloak公式Webサイト: https://www.keycloak.org/
  • OAuth 2.0クライアントオープンソースライブラリ: https://github .com/thephpleague/oauth2-client

以上がKeycloakを使用したPHPセキュリティ検証の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。