User Authentication এবং Authorization

Mobile App Development - আয়নিক (Ionic) - Ionic এর মধ্যে Authentication এবং Security
386

User Authentication এবং Authorization হল অ্যাপ্লিকেশন এবং ওয়েব সার্ভিসে নিরাপত্তা নিশ্চিত করার দুইটি গুরুত্বপূর্ণ পদ্ধতি। এই দুটি পদ্ধতি একে অপরের সাথে সম্পর্কিত হলেও তাদের কাজ এবং উদ্দেশ্য আলাদা। Authentication নিশ্চিত করে যে, ব্যবহারকারী কে (Who), এবং Authorization নিশ্চিত করে যে, ব্যবহারকারী কি করতে পারে (What)।


১. User Authentication

Authentication হচ্ছে প্রক্রিয়া যেখানে ব্যবহারকারীর পরিচয় যাচাই করা হয়। এটা নিশ্চিত করে যে, যেই ব্যক্তি অ্যাপ্লিকেশন বা সিস্টেমে প্রবেশ করছে সে আসল ব্যবহারকারী কি না। সাধারণত এটি ইউজারনেম এবং পাসওয়ার্ডের মাধ্যমে সম্পন্ন হয়, তবে আধুনিক অ্যাপ্লিকেশনগুলোতে Multi-factor Authentication (MFA) বা OAuth ব্যবহারও হয়।

Authentication Example (Email/Password)

  1. Login Form: ইউজার তাদের ইমেইল এবং পাসওয়ার্ড দিয়ে লগইন করার চেষ্টা করবে।
  2. Backend Authentication: ব্যাকএন্ড সার্ভার ইউজারের প্রদান করা তথ্য যাচাই করবে এবং টোকেন প্রদান করবে (যেমন JWT - JSON Web Token)।
  3. Token Validation: ইউজার যে টোকেন পায় সেটি পরবর্তী API রিকোয়েস্টের সাথে পাঠানো হবে এবং ব্যাকএন্ড সার্ভার টোকেন যাচাই করে অ্যাক্সেস প্রদান করবে।

Example of Authentication Flow (Ionic with Firebase)

  1. Firebase Authentication Setup: Firebase ব্যবহার করে Authentication সেটআপ করা।
  2. Login Component:
import { Component } from '@angular/core';
import { AngularFireAuth } from '@angular/fire/auth';
import { Router } from '@angular/router';

@Component({
  selector: 'app-login',
  templateUrl: './login.page.html',
  styleUrls: ['./login.page.scss'],
})
export class LoginPage {
  email: string;
  password: string;

  constructor(private afAuth: AngularFireAuth, private router: Router) {}

  login() {
    this.afAuth.signInWithEmailAndPassword(this.email, this.password)
      .then((userCredential) => {
        this.router.navigate(['/home']);  // Login successful, navigate to home
      })
      .catch(error => {
        console.log('Login error: ', error);
      });
  }
}

এখানে, Firebase Authentication API ব্যবহার করে ইউজারকে লগইন করার চেষ্টা করা হচ্ছে এবং সফল হলে home পেজে নেভিগেট করা হচ্ছে।


২. User Authorization

Authorization হচ্ছে প্রক্রিয়া যেখানে ব্যবহারকারী কে কী কী অ্যাক্সেস করতে দেওয়া হবে তা নির্ধারণ করা হয়। এটা নিশ্চিত করে যে, একটি অথেনটিকেটেড ব্যবহারকারী কি ধরনের রিসোর্সে অ্যাক্সেস পাবে। উদাহরণস্বরূপ, সাধারণ ইউজার শুধুমাত্র তাদের নিজস্ব তথ্য অ্যাক্সেস করতে পারে, তবে অ্যাডমিন সমস্ত ব্যবহারকারীর ডেটা দেখতে এবং পরিবর্তন করতে পারে।

Types of Authorization

  1. Role-Based Authorization:
    • Admin: সম্পূর্ণ অ্যাক্সেস
    • User: সীমিত অ্যাক্সেস (যেমন শুধুমাত্র নিজস্ব ডেটা)
  2. Permission-Based Authorization:
    • ব্যবহৃত হয় নির্দিষ্ট অধিকার (permissions) ভিত্তিক অ্যাক্সেস নিয়ন্ত্রণের জন্য, যেমন “Can Edit Profile”, “Can View Dashboard” ইত্যাদি।

Role-Based Authorization Example (JWT + Roles)

// Backend Server Example (Node.js/Express)

const jwt = require('jsonwebtoken');

// Middleware for role checking
function authorizeRole(requiredRole) {
  return (req, res, next) => {
    const token = req.headers['authorization'];
    if (!token) {
      return res.status(403).send('Token is required for authentication');
    }

    jwt.verify(token, 'your-secret-key', (err, decoded) => {
      if (err) {
        return res.status(403).send('Token is invalid');
      }

      if (decoded.role !== requiredRole) {
        return res.status(403).send('You do not have permission to access this resource');
      }

      next();  // User is authorized, proceed to the requested route
    });
  };
}

// Admin route with role-based authorization
app.get('/admin', authorizeRole('admin'), (req, res) => {
  res.send('Welcome Admin');
});

এখানে, একটি middleware authorizeRole তৈরি করা হয়েছে যা admin রোল ছাড়া অন্য ইউজারকে অ্যাডমিন পেজে প্রবেশ করতে দিবে না। JWT এর মাধ্যমে ইউজারের রোল যাচাই করা হচ্ছে।


৩. JWT (JSON Web Token)

JWT হল একটি জনপ্রিয় প্রযুক্তি যা Authentication এবং Authorization উভয়ের জন্য ব্যবহৃত হয়। এটি ক্লায়েন্ট-সাইডে টোকেন তৈরি করে এবং সেগুলি ব্যাকএন্ড সার্ভারে যাচাই করা হয়।

JWT Authentication & Authorization Flow

  1. User Authentication:
    • ইউজার সাইন ইন করলে সার্ভার তাদের ইউজারনেম এবং পাসওয়ার্ড যাচাই করে JWT টোকেন প্রদান করে।
  2. Authorization with JWT:
    • প্রতিটি API রিকোয়েস্টে ইউজার টোকেন পাঠায়। সার্ভার টোকেন যাচাই করে এবং যদি টোকেন ভ্যালিড হয় তবে রিকোয়েস্ট প্রোসেস করে।

JWT Example

Backend (Node.js + Express)

const jwt = require('jsonwebtoken');

function generateToken(user) {
  return jwt.sign({ userId: user.id, role: user.role }, 'your-secret-key', { expiresIn: '1h' });
}

app.post('/login', (req, res) => {
  const { username, password } = req.body;
  // Authenticate the user (check username & password)
  if (username === 'admin' && password === 'admin123') {
    const user = { id: 1, role: 'admin' };  // Example user
    const token = generateToken(user);
    res.json({ token });
  } else {
    res.status(401).send('Invalid credentials');
  }
});

Frontend (Ionic)

login() {
  this.afAuth.signInWithEmailAndPassword(this.email, this.password)
    .then((userCredential) => {
      const user = userCredential.user;
      // Call API to get JWT Token
      this.http.post('https://your-api.com/login', { email: this.email, password: this.password })
        .subscribe((response: any) => {
          const token = response.token;
          localStorage.setItem('authToken', token);
        });
    })
    .catch(error => {
      console.log('Login error: ', error);
    });
}

Authorization with JWT Token

// Use the token in headers for subsequent requests
const token = localStorage.getItem('authToken');
const headers = new HttpHeaders().set('Authorization', `Bearer ${token}`);
this.http.get('https://your-api.com/protected-resource', { headers })
  .subscribe(response => {
    console.log(response);
  });

সারাংশ

  • Authentication: ব্যবহারকারীর পরিচয় যাচাই করার প্রক্রিয়া। এটি নিশ্চিত করে যে, অ্যাপ্লিকেশনে প্রবেশকারী ব্যক্তি আসল ব্যবহারকারী।
  • Authorization: ব্যবহারকারীকে কিসে অ্যাক্সেস দেওয়া হবে তা নির্ধারণ করে। এটি নিশ্চিত করে যে, একবার ব্যবহারকারী অথেনটিকেট হলে, তারা কোন রিসোর্স অ্যাক্সেস করতে পারবে।
  • JWT: JSON Web Token হলো একটি জনপ্রিয় এবং নিরাপদ পদ্ধতি যা Authentication এবং Authorization উভয়ের জন্য ব্যবহৃত হয়। এটি টোকেন ভিত্তিক অ্যাক্সেস কন্ট্রোল প্রক্রিয়া সরবরাহ করে।

Ionic অ্যাপ্লিকেশনে Firebase, JWT বা OAuth 2.0 ব্যবহার করে User Authentication এবং Authorization ব্যবস্থা সহজেই ইমপ্লিমেন্ট করা যেতে পারে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...