PHP SSO シングル サインオン実装原理の分析
インターネットの発展に伴い、さまざまな Web サイトやアプリケーションを使用するときに、再ログインが必要になることがよくあります。この問題は、ユーザーの時間を無駄にするだけでなく、ユーザーにも不便をもたらします。この問題を解決するために登場したのがSSO(シングルサインオン)技術です。
1. SSO シングル サインオンの概念
SSO (シングル サインオン) は、ユーザーが複数の関連付けられたアプリケーションに 1 回だけログインして、これらのアプリケーションにアクセスできるようにする認証メカニズムです。 。簡単に言うと、ユーザーはログイン資格情報を一度入力するだけで、複数のアプリケーション間をシームレスに切り替えることができます。
2. SSO シングル サインオンの実装原則
SSO シングル サインオンの実装に必要な役割には、ユーザー、サービス プロバイダー (サービス プロバイダー、SP)、およびアイデンティティ プロバイダー (アイデンティティ プロバイダー) が含まれます、IdP)。ユーザーが初めてアプリケーションにログインすると、システムは ID 認証を実行し、認証結果をユーザーのブラウザー Cookie に保存し、一意の識別子を生成して、この識別子をアプリケーションのデータベースに保存します。ユーザーが他のアプリケーションにアクセスすると、この識別子もサービス プロバイダーのサーバーに送信され、サービス プロバイダーはこの識別子に基づいて認証を行い、ユーザーによる繰り返しのログインを回避できます。
SSO シングル サインオンの実装原理を理解するために、具体的な例を使用してみましょう。
アイデンティティ プロバイダーは、ユーザー認証を担当するコア システムです。まず、アイデンティティ プロバイダー機能を実装するための PHP ファイルを作成します。
<?php session_start(); // 验证用户名和密码 function authenticate($username, $password) { // 进行身份验证逻辑 if ($username === 'admin' && $password === '123456') { return true; } return false; } // 用户登录 function login($username, $password) { $authenticated = authenticate($username, $password); if ($authenticated) { $_SESSION['user'] = $username; // 将用户名存储在Session中 return true; } return false; } // 用户注销 function logout() { unset($_SESSION['user']); // 清除Session中的用户信息 } // 检查用户是否已登录 function checkLogin() { return isset($_SESSION['user']); } ?>
サービス プロバイダーは、アイデンティティ プロバイダーに依存して ID 認証を完了するアプリケーション システムです。同様に、サービス プロバイダーの機能を実装するための PHP ファイルを作成します。
<?php include 'idp.php'; // 引入身份提供商的文件 // 检查用户是否登录 if (!checkLogin()) { header("Location: login.php"); // 用户未登录则跳转到登录页面 exit; } // 用户已登录,显示内容 echo "Welcome " . $_SESSION['user']; ?> <a href="logout.php">Logout</a>
ユーザー ログイン用のサービス プロバイダーのディレクトリに、login.php ファイルを作成します。
<?php include 'idp.php'; // 处理用户提交的登录表单 if ($_SERVER['REQUEST_METHOD'] === 'POST') { $username = $_POST['username']; $password = $_POST['password']; if (login($username, $password)) { header("Location: sp.php"); // 登录成功跳转到服务提供商页面 exit; } else { echo "Invalid username or password"; } } ?> <form method="POST"> <input type="text" name="username" placeholder="Username" required><br> <input type="password" name="password" placeholder="Password" required><br> <button type="submit">Login</button> </form>
ユーザー ログアウト用のサービス プロバイダーのディレクトリに logout.php ファイルを作成します。
<?php include 'idp.php'; logout(); // 用户注销 header("Location: login.php"); // 注销后跳转到登录页面 exit; ?>
3. 概要
SSO シングル サインオンは、アイデンティティ プロバイダーとサービス プロバイダーの協力により、ユーザーが一度ログインすると、それを複数のアプリケーションで使用できるようになります。実装プロセスでは、ログインのセキュリティを確保するために適切な認証メカニズムを採用する必要があり、認証結果の識別子はシステムに保存され、さまざまなアプリケーション間の認証を容易にします。以上、PHP SSO シングルサインオンの実装原理を分析しましたので、皆様のご参考になれば幸いです。
以上がPHP SSOシングルサインオン実装原理分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。