PHP を使用して効率的かつ安定した SSO シングル サインオンを実現する方法
はじめに:
インターネット アプリケーションの普及に伴い、ユーザーは大規模な問題に直面しています。登録およびログインプロセスの数。ユーザー エクスペリエンスを向上させ、ユーザーの登録とログイン間隔を短縮するために、多くの Web サイトやアプリケーションはシングル サインオン (SSO) テクノロジーを採用し始めています。この記事では、PHP を使用して効率的で安定した SSO シングル サインオンを実装する方法を紹介し、具体的なコード例を示します。
1. SSO シングル サインオンの原則
SSO シングル サインオンは、ユーザーが一度ログインするだけで相互に信頼できる複数のアプリケーションにアクセスできるようにする ID 認証ソリューションです。原理は次の手順のように簡単に説明できます。
2. SSO シングル サインオンを実装する手順
(1) データベース テーブルを作成し、ユーザー名、パスワード、役割、その他の情報を含むユーザー情報を記録します。
(2) ユーザーがユーザー名とパスワードを入力するログイン ページを作成します。
(3) ユーザーが入力したユーザー名とパスワードをデータベースに保存されている情報と比較します。
(4) 検証に合格した場合は、トークン (UUID などの一意の識別子を使用できます) を生成し、トークンとユーザー情報をデータベースに保存し、トークンをアプリケーション A に返します。
(1) ユーザーはアプリケーション A のログイン ページにアクセスします。
(2) ユーザーはユーザー名とパスワードを入力します。
(3) アプリケーション A は、ユーザー名とパスワードを認証センターのログイン インターフェイスに送信します。
(4) 認証センターで本人確認が行われ、認証に合格するとトークンが生成され、アプリケーションAに返されます。
(5) アプリケーション A は、その後の検証のためにトークンをセッションに保存します。
(1) ユーザーはアプリケーション A の保護されたリソースにアクセスします。
(2) アプリケーション A は、セッションに保存されているトークンを取得します。
(3) アプリケーション A は、検証のためにトークンを認証センターの検証インターフェイスに送信します。
(4) 認証センターはトークンの正当性を検証し、検証結果をアプリケーションAに返します。
3. コード例
<?php session_start(); if($_POST['username'] == 'admin' && $_POST['password'] == '123456') { $token = generateToken(); $_SESSION['token'] = $token; saveTokenToDatabase($_POST['username'], $token); // 保存token到数据库 echo $token; } else { echo 'Invalid username or password'; } function generateToken() { return md5(uniqid(rand(), true)); } function saveTokenToDatabase($username, $token) { // 将用户名和令牌保存到数据库 } ?>
<!DOCTYPE html> <html> <body> <h2>Login</h2> <form action="login.php" method="POST"> <label for="username">Username:</label> <input type="text" id="username" name="username"><br><br> <label for="password">Password:</label> <input type="password" id="password" name="password"><br><br> <input type="submit" value="Login"> </form> </body> </html>
<?php session_start(); $token = $_SESSION['token']; if(validateToken($token)) { echo 'Access granted! This is a protected resource.'; } else { echo 'Access denied! Please login first.'; } function validateToken($token) { // 向认证中心验证令牌的有效性 } ?>
結論:
以上がPHP を使用して効率的で安定した SSO シングル サインオンを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。