Ajax এর মাধ্যমে Role-based Access Control (RBAC)

Web Development - অ্যাজাক্স (Ajax) - Ajax এর মাধ্যমে Authentication এবং Authorization (Authentication and Authorization with Ajax) |
9
9

Role-based Access Control (RBAC) একটি নিরাপত্তা কৌশল যা ব্যবহারকারীদের বিভিন্ন ভূমিকা (Role) ভিত্তিক অনুমতি প্রদান করে। এতে ব্যবহারকারীদের বিভিন্ন রিসোর্স বা পেজ অ্যাক্সেস করার অনুমতি ভূমিকার উপর নির্ভর করে। Ajax এর মাধ্যমে আপনি ব্যবহারকারীদের অনুমতি এবং ভূমিকা যাচাই করার প্রক্রিয়া সহজভাবে বাস্তবায়ন করতে পারেন, যেখানে পেজ রিফ্রেশ ছাড়াই ডেটা এবং রিসোর্স অ্যাক্সেস নিয়ন্ত্রণ করা সম্ভব হয়।

এই টিউটোরিয়ালে, Ajax ব্যবহার করে RBAC কিভাবে কাজ করে তা ব্যাখ্যা করা হবে।


Role-based Access Control (RBAC) এর মূল ধারণা

RBAC এর মধ্যে মূলত দুটি মৌলিক উপাদান থাকে:

  1. Roles (ভূমিকা): বিভিন্ন ধরনের ভূমিকা যেমন অ্যাডমিন, ইউজার, ম্যানেজার ইত্যাদি। প্রতিটি ভূমিকার নিজস্ব অ্যাক্সেস অনুমতি থাকে।
  2. Permissions (অনুমতি): প্রতিটি ভূমিকা কোন রিসোর্সে অ্যাক্সেস পাবে এবং কি ধরনের কাজ করতে পারবে (যেমন, শুধুমাত্র পড়া, লিখতে পারবে, মুছে ফেলতে পারবে ইত্যাদি)।

Ajax এর মাধ্যমে RBAC বাস্তবায়ন

১. HTML ফর্ম তৈরি

প্রথমে একটি সাধারণ ফর্ম তৈরি করা হবে, যা ব্যবহারকারীকে লগইন করতে দিবে এবং তার ভূমিকা যাচাই করবে।

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>RBAC Example</title>
</head>
<body>
    <h1>Login</h1>
    <form id="loginForm">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username" required>
        <br>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password" required>
        <br>
        <button type="button" onclick="login()">Login</button>
    </form>

    <div id="response"></div>
    <div id="content"></div>

    <script src="script.js"></script>
</body>
</html>

২. JavaScript (Ajax) তৈরি

এখন, script.js ফাইলে একটি Ajax কল তৈরি করতে হবে, যা লগইন তথ্য সার্ভারে পাঠাবে এবং ব্যবহারকারীর ভূমিকা যাচাই করবে।

script.js:

function login() {
    const username = document.getElementById("username").value;
    const password = document.getElementById("password").value;

    const loginData = {
        username: username,
        password: password
    };

    const xhr = new XMLHttpRequest();
    xhr.open("POST", "login.php", true); // PHP ফাইল যেখানে Authentication হবে
    xhr.setRequestHeader("Content-Type", "application/json");

    xhr.onload = function () {
        if (xhr.status === 200) {
            const response = JSON.parse(xhr.responseText);
            if (response.status === "success") {
                document.getElementById("response").innerHTML = "Login Successful!";
                displayContent(response.role);
            } else {
                document.getElementById("response").innerHTML = "Invalid username or password!";
            }
        } else {
            document.getElementById("response").innerHTML = "Error: Unable to process login request.";
        }
    };

    xhr.send(JSON.stringify(loginData)); // ফর্ম ডেটা পাঠানো
}

function displayContent(role) {
    const contentDiv = document.getElementById("content");

    // ভূমিকা অনুযায়ী কন্টেন্ট শো করা
    if (role === "admin") {
        contentDiv.innerHTML = "<h2>Welcome Admin!</h2><p>You have full access to all resources.</p>";
    } else if (role === "user") {
        contentDiv.innerHTML = "<h2>Welcome User!</h2><p>You have limited access.</p>";
    } else {
        contentDiv.innerHTML = "<h2>Access Denied</h2><p>Your role does not have access to this page.</p>";
    }
}

৩. PHP ফাইল তৈরি (Login Authentication)

এখন, সার্ভারে একটি PHP ফাইল তৈরি করা হবে যা ইউজারনেম এবং পাসওয়ার্ড যাচাই করবে এবং সঠিক হলে ব্যবহারকারীর ভূমিকা রিটার্ন করবে।

login.php:

<?php
session_start();

// ভূমিকা সহ ইউজারনেম এবং পাসওয়ার্ড যাচাই
$users = [
    'admin' => ['password' => 'admin123', 'role' => 'admin'],
    'user1' => ['password' => 'user123', 'role' => 'user'],
    'guest' => ['password' => 'guest123', 'role' => 'guest'],
];

$data = json_decode(file_get_contents("php://input"), true);
$username = $data['username'];
$password = $data['password'];

if (isset($users[$username]) && $users[$username]['password'] === $password) {
    $_SESSION['username'] = $username;
    $_SESSION['role'] = $users[$username]['role']; // ভূমিকা সেশন সেট করা
    echo json_encode(["status" => "success", "role" => $users[$username]['role']]);
} else {
    echo json_encode(["status" => "error"]);
}
?>

৪. PHP ফাইল তৈরি (Role Checking)

এখন, আমরা সার্ভারের একটি পেজ তৈরি করবো যা প্রমাণীকৃত ইউজারের ভূমিকা চেক করবে এবং সেই অনুযায়ী তার অ্যাক্সেস কন্ট্রোল করবে।

role_check.php:

<?php
session_start();

if (!isset($_SESSION['role'])) {
    echo "Access Denied: Please login first.";
    exit();
}

$role = $_SESSION['role'];

if ($role === "admin") {
    echo "Welcome Admin! You have full access.";
} elseif ($role === "user") {
    echo "Welcome User! You have limited access.";
} else {
    echo "Access Denied: Unauthorized role.";
}
?>

৫. নিরাপত্তা এবং সেশন ম্যানেজমেন্ট

RBAC বাস্তবায়নের সময় কিছু নিরাপত্তা বিষয় অবশ্যই খেয়াল রাখতে হবে:

  • Session Hijacking: সেশন ব্যবহারের সময় নিরাপত্তা ব্যবস্থা নিশ্চিত করতে হবে, যেমন সেশন আইডি সঠিকভাবে হ্যান্ডেল করা।
  • Cross-Site Scripting (XSS): যেহেতু ব্যবহারকারী ইনপুট গ্রহণ করা হচ্ছে, ইনপুটের ভ্যালিডেশন এবং স্যানিটাইজেশন করা উচিত।
  • Cross-Site Request Forgery (CSRF): CSRF আক্রমণ থেকে রক্ষা পেতে উপযুক্ত নিরাপত্তা ব্যবস্থা গ্রহণ করুন, যেমন CSRF টোকেন ব্যবহার।

উপসংহার

Ajax এবং PHP ব্যবহার করে Role-based Access Control (RBAC) বাস্তবায়ন করা খুবই কার্যকরী পদ্ধতি, যা ওয়েব অ্যাপ্লিকেশনের নিরাপত্তা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। Ajax ব্যবহার করে ব্যবহারকারী লগইন করার পর, তার ভূমিকা চেক করে ডেটা এবং রিসোর্সের অ্যাক্সেস নিয়ন্ত্রণ করা যায়। এটি ওয়েব অ্যাপ্লিকেশনকে আরও নিরাপদ এবং দ্রুত করে তোলে।

Content added By
Promotion