Analisis prinsip pelaksanaan log masuk tunggal PHP SSO

王林
Lepaskan: 2023-10-15 13:04:01
asal
657 orang telah melayarinya

PHP SSO单点登录实现原理解析

Analisis prinsip pelaksanaan log masuk tunggal PHP SSO

Dengan perkembangan Internet, orang ramai sering menghadapi masalah perlu log masuk semula apabila menggunakan pelbagai laman web dan aplikasi Ini bukan sahaja membuang masa pengguna, tetapi juga Ia membawa ketidakselesaan kepada pengguna. Untuk menyelesaikan masalah ini, teknologi SSO (Single Sign-On) telah wujud.

1. Konsep SSO single sign-on

SSO (Single Sign-On) ialah mekanisme pengesahan yang membolehkan pengguna mengakses berbilang aplikasi yang berkaitan dengan log masuk sekali sahaja. Ringkasnya, pengguna hanya perlu memberikan bukti kelayakan log masuk sekali dan boleh bertukar dengan lancar antara berbilang aplikasi.

2. Prinsip pelaksanaan SSO single sign-on

Peranan yang diperlukan untuk melaksanakan SSO single sign-on termasuk pengguna, penyedia perkhidmatan (Penyedia Perkhidmatan, SP) dan pembekal identiti (Penyedia Identiti, IdP). Apabila pengguna log masuk ke aplikasi buat kali pertama, sistem akan melakukan pengesahan identiti, kemudian menyimpan hasil pengesahan dalam kuki penyemak imbas pengguna, menjana pengecam unik dan menyimpan pengecam ini dalam pangkalan data aplikasi. Apabila pengguna mengakses aplikasi lain, pengecam ini juga akan dihantar ke pelayan pembekal perkhidmatan dan pembekal perkhidmatan boleh mengesahkan berdasarkan pengecam ini untuk mengelakkan log masuk berulang oleh pengguna.

Di bawah ini kami menggunakan contoh khusus untuk memahami prinsip pelaksanaan log masuk tunggal SSO.

  1. Cipta Pembekal Identiti (IdP)

Pembekal identiti ialah sistem teras yang bertanggungjawab untuk pengesahan pengguna. Pertama, kami mencipta fail PHP untuk melaksanakan fungsi pembekal identiti.

<?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']);
}
?>
Salin selepas log masuk
  1. Buat Pembekal Perkhidmatan (SP)

Pembekal perkhidmatan ialah sistem aplikasi yang bergantung kepada pembekal identiti untuk melengkapkan pengesahan identiti. Begitu juga, kami mencipta fail PHP untuk melaksanakan fungsi pembekal perkhidmatan.

<?php
include 'idp.php'; // 引入身份提供商的文件

// 检查用户是否登录
if (!checkLogin()) {
    header("Location: login.php"); // 用户未登录则跳转到登录页面
    exit;
}

// 用户已登录,显示内容
echo "Welcome " . $_SESSION['user'];
?>

<a href="logout.php">Logout</a>
Salin selepas log masuk
  1. Buat halaman untuk log masuk pengguna

Buat fail login.php dalam direktori pembekal perkhidmatan untuk log masuk pengguna.

<?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>
Salin selepas log masuk
  1. Buat fungsi log keluar pengguna

Buat fail logout.php dalam direktori pembekal perkhidmatan untuk log keluar pengguna.

<?php
include 'idp.php';
logout(); // 用户注销
header("Location: login.php"); // 注销后跳转到登录页面
exit;
?>
Salin selepas log masuk

3. Ringkasan

SSO log masuk tunggal, melalui kerjasama pembekal identiti dan pembekal perkhidmatan, membolehkan pengguna log masuk sekali dan menggunakannya dalam berbilang aplikasi. Semasa proses pelaksanaan, mekanisme pengesahan yang sesuai perlu diguna pakai untuk memastikan keselamatan log masuk, dan pengecam hasil pengesahan disimpan dalam sistem untuk memudahkan pengesahan antara pelbagai aplikasi. Di atas adalah analisis prinsip pelaksanaan PHP SSO single sign-on Saya harap ia akan membantu semua orang.

Atas ialah kandungan terperinci Analisis prinsip pelaksanaan log masuk tunggal PHP SSO. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!