OAuth2 এর মাধ্যমে Third-Party Authentication

Flask এবং OAuth Integration - ফ্লাস্ক (Flask) - Web Development

287

OAuth2 হলো একটি আধুনিক অথেনটিকেশন প্রোটোকল যা ব্যবহারকারীদের জন্য তৃতীয় পক্ষের সেবা (যেমন গুগল, ফেসবুক, টুইটার) ব্যবহার করে লগইন করার সুযোগ দেয়, যাতে তারা তাদের ডেটা নিরাপদে শেয়ার করতে পারেন। Flask-এ OAuth2 ইন্টিগ্রেট করতে Flask-OAuthlib বা Authlib ব্যবহার করা হয়। OAuth2 এর মাধ্যমে তৃতীয় পক্ষের অথেনটিকেশন (Third-Party Authentication) অ্যাপ্লিকেশনগুলিতে ব্যবহারকারী লগইন সিস্টেম সহজ এবং নিরাপদ করে তোলে।

এই টিউটোরিয়ালে Flask-এ OAuth2 এর মাধ্যমে তৃতীয় পক্ষের অথেনটিকেশন কিভাবে ইন্টিগ্রেট করা যায়, তা দেখানো হবে।


Flask-এ OAuth2 সিস্টেম সেটআপ

OAuth2 সিস্টেম সেটআপ করার জন্য Authlib লাইব্রেরি ব্যবহার করা হবে, যা Flask-এর সাথে সহজেই ইন্টিগ্রেট হতে পারে এবং গুগল, ফেসবুক, টুইটার ইত্যাদি তৃতীয় পক্ষের অথেনটিকেশন সিস্টেমকে সমর্থন করে।

ধাপ ১: Authlib ইনস্টল করা

প্রথমে Authlib ইনস্টল করতে হবে:

pip install authlib

ধাপ ২: Flask অ্যাপ্লিকেশন তৈরি এবং OAuth2 কনফিগারেশন

Flask অ্যাপ তৈরি করতে হবে এবং OAuth2 কনফিগারেশন সেট করতে হবে। এখানে গুগল OAuth2 দিয়ে লগইন সিস্টেম তৈরি করা হবে।

from flask import Flask, redirect, url_for, session
from authlib.integrations.flask_client import OAuth

app = Flask(__name__)

# Secret Key এর মাধ্যমে সেশন সুরক্ষা
app.secret_key = 'random_secret_key'

# OAuth কনফিগারেশন সেট করা (গুগল OAuth)
app.config['GOOGLE_CLIENT_ID'] = 'YOUR_GOOGLE_CLIENT_ID'
app.config['GOOGLE_CLIENT_SECRET'] = 'YOUR_GOOGLE_CLIENT_SECRET'
app.config['GOOGLE_DISCOVERY_URL'] = 'https://accounts.google.com/.well-known/openid-configuration'

# OAuth ইনিশিয়ালাইজ করা
oauth = OAuth(app)
google = oauth.register(
    'google',
    client_id=app.config['GOOGLE_CLIENT_ID'],
    client_secret=app.config['GOOGLE_CLIENT_SECRET'],
    authorize_url='https://accounts.google.com/o/oauth2/auth',
    authorize_params=None,
    access_token_url='https://accounts.google.com/o/oauth2/token',
    access_token_params=None,
    refresh_token_url=None,
    refresh_token_params=None,
    client_kwargs={'scope': 'openid profile email'},
)

# হোম পেজ রাউট
@app.route('/')
def home():
    return 'Hello, please <a href="/login">login with Google</a>'

# গুগল OAuth2 লগইন রাউট
@app.route('/login')
def login():
    # গুগল OAuth2 এর মাধ্যমে রিডিরেক্ট করতে
    redirect_uri = url_for('authorize', _external=True)
    return google.authorize_redirect(redirect_uri)

# গুগল OAuth2 অথোরাইজেশন কলে ব্যাক রাউট
@app.route('/authorize')
def authorize():
    # গুগল থেকে অ্যাক্সেস টোকেন পেতে
    token = google.authorize_access_token()
    
    # ইউজার ইনফো ফেচ করতে
    user = google.parse_id_token(token)
    
    # সেশনে ইউজারের নাম স্টোর করা
    session['user'] = user['name']
    
    return f'Hello, {session["user"]}'

# ইউজার লগআউট রাউট
@app.route('/logout')
def logout():
    session.pop('user', None)
    return redirect(url_for('home'))

if __name__ == '__main__':
    app.run(debug=True)

এখানে:

  • google = oauth.register(): গুগল OAuth ক্লায়েন্ট কনফিগারেশন।
  • google.authorize_redirect(): ইউজারকে গুগল OAuth লগইন পেজে রিডিরেক্ট করার জন্য।
  • google.authorize_access_token(): গুগল থেকে অ্যাক্সেস টোকেন নেওয়ার জন্য।
  • google.parse_id_token(): গুগল থেকে পাওয়া টোকেন দিয়ে ইউজারের ইনফরমেশন (যেমন নাম) নেওয়া।

ধাপ ৩: গুগল API কনসোল থেকে ক্লায়েন্ট আইডি এবং সিক্রেট সংগ্রহ করা

গুগল OAuth2 সিস্টেমে এক্সেস করতে হলে আপনাকে গুগল API কনসোল থেকে ক্লায়েন্ট আইডি এবং সিক্রেট সংগ্রহ করতে হবে।

  1. Google Developer Console এ যান।
  2. একটি নতুন প্রজেক্ট তৈরি করুন।
  3. APIs & Services > Credentials এ গিয়ে Create Credentials নির্বাচন করুন।
  4. OAuth 2.0 Client IDs নির্বাচন করুন এবং ওয়েব অ্যাপের জন্য কনফিগার করুন।
  5. রিডিরেক্ট URI হিসেবে http://127.0.0.1:5000/authorize দিন।
  6. ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট সংগ্রহ করুন এবং আপনার Flask অ্যাপে যুক্ত করুন।

ধাপ ৪: রান এবং টেস্ট করা

এখন, Flask অ্যাপটি চালু করুন:

python app.py

এটি আপনাকে লোকালহোস্টে (যেমন http://127.0.0.1:5000) চলবে এবং আপনি গুগল লগইন লিঙ্ক দেখতে পাবেন। গুগল অ্যাকাউন্ট দিয়ে লগইন করার পর, আপনি সেশনে ইউজারের নাম দেখতে পারবেন।


৫. প্রোডাকশন পরিবেশে OAuth2 ব্যবহার

আপনি যখন আপনার অ্যাপ্লিকেশন প্রোডাকশন পরিবেশে চালাবেন, তখন আপনাকে redirect_uri এবং Google API Console তে সঠিক প্রোডাকশন URI দিতে হবে। এছাড়া সিক্রেট কীগুলি পরিবেশ ভেরিয়েবল বা নিরাপদ পদ্ধতিতে সংরক্ষণ করতে হবে।


Flask-এ OAuth2 এর মাধ্যমে Third-Party Authentication ইন্টিগ্রেট করা খুবই সহজ। Authlib লাইব্রেরির সাহায্যে আপনি গুগল, ফেসবুক, টুইটার ইত্যাদি OAuth সিস্টেম ব্যবহার করে ব্যবহারকারী লগইন সিস্টেম খুব সহজে বাস্তবায়ন করতে পারেন। Flask OAuth2 ব্যবহারের মাধ্যমে তৃতীয় পক্ষের সাথে অথেনটিকেশন সম্পন্ন করা নিরাপদ এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।

Content added By
Promotion

Are you sure to start over?

Loading...