OAuth2 पासवर्ड फ़्लो एकीकरण
अपने FastAPI अनुप्रयोग में उपयोगकर्ता लॉगिन और टोकन प्राप्त करने के लिए OAuth2 पासवर्ड फ़्लो को एकीकृत करें।
OAuth2 पासवर्ड फ़्लो एकीकरण, CoddyKit पर Node.js बैकएंड विकास बूटकैंप का एक निःशुल्क पाठ है। यह 6 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Node.js बैकएंड विकास बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Node.js बैकएंड विकास बूटकैंप पाठ्यक्रम में कुल 6 पाठ शामिल हैं।
OAuth2 Password Flow का परिचय
स्वागत है! यह पाठ FastAPI में OAuth2 Password Flow को एकीकृत करने पर केंद्रित है। यह उपयोगकर्ताओं को आपके अनुप्रयोग में लॉग इन करने का एक मानक और सुरक्षित तरीका है।
इस प्रवाह में उपयोगकर्ता अपना उपयोगकर्ता नाम और पासवर्ड सीधे आपके API को दे सकते हैं। सफल होने पर आपका API एक access token जारी करता है, जिसका उपयोग उपयोगकर्ता सुरक्षित संसाधनों तक पहुँचने के लिए करता है।
Password Flow का उपयोग क्यों करें?
OAuth2 Password Flow विशेष रूप से प्रथम-पक्ष अनुप्रयोगों के लिए उपयुक्त है, जैसे आपका अपना मोबाइल ऐप या वेब फ्रंटएंड, जहाँ आपको क्लाइंट पर पूरा भरोसा होता है।
- सुरक्षा: यह व्यापक रूप से अपनाया गया और अच्छी तरह समझा जाने वाला सुरक्षा मानक है।
- सरलता: उपयोगकर्ताओं के लिए सीधे और आसान लॉगिन अनुभव प्रदान करता है।
- टोकन-आधारित: लॉगिन के बाद उपयोगकर्ताओं को एक टोकन मिलता है, इसलिए प्रत्येक अनुरोध के साथ प्रमाण-पत्र भेजने की आवश्यकता नहीं होती।
FastAPI के प्रमुख घटक
FastAPI OAuth2 Password Flow को आसानी से लागू करने के लिए विशेष उपयोगिताएँ प्रदान करता है:
OAuth2PasswordBearer: एक निर्भरता जो आने वाले अनुरोधों केAuthorization: BearerHeader से access token निकालती है।OAuth2PasswordRequestForm: एक निर्भरता जो लॉगिन अनुरोध के दौरान भेजे गए फ़ॉर्म डेटा सेusernameऔरpasswordको स्वतः पार्स करती है।
हम इन्हें FastAPI की शक्तिशाली Dependency Injection प्रणाली के साथ मिलाएँगे।
OAuth2PasswordBearer सेट करना
सबसे पहले, हमें OAuth2PasswordBearer को प्रारंभ करना होगा। tokenUrl पैरामीटर महत्वपूर्ण है; यह क्लाइंट को बताता है कि access token प्राप्त करने के लिए अपने लॉगिन प्रमाण-पत्र कहाँ भेजने हैं।
यह URL हमारे लॉगिन endpoint का पथ होगा।
from fastapi import FastAPI
from fastapi.security import OAuth2PasswordBearer
app = FastAPI()
# 'token' is the URL path where clients will log in
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
# We will create a @app.post("/token") endpoint next!लॉगिन Endpoint: /token
यह वह मुख्य endpoint है जहाँ उपयोगकर्ता अपना उपयोगकर्ता नाम और पासवर्ड भेजेंगे। यह आमतौर पर POST अनुरोध होता है।
हम निर्भरता के रूप में OAuth2PasswordRequestForm का उपयोग करते हैं। FastAPI आने वाले फ़ॉर्म डेटा को स्वतः पार्स करता है और username तथा password विशेषताएँ उपलब्ध कराता है।
from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordRequestForm
@app.post("/token")
async def login_for_access_token(
form_data: OAuth2PasswordRequestForm = Depends()
):
# 1. Authenticate user (verify username/password)
# 2. If valid, create an access token
# 3. Return the token
pass # Details coming in the next scene!पूरा कोड: लॉगिन और सुरक्षित Endpoint
यह OAuth2 Password Flow दिखाने वाला एक पूरा FastAPI अनुप्रयोग है। इसमें लॉगिन के लिए /token endpoint और access token से सुरक्षित /users/me/ endpoint शामिल है।
यह कोड चलाएँ: इसे main.py के रूप में सहेजें, फिर uvicorn main:app --reload चलाएँ। दस्तावेज़ देखने के लिए http://127.0.0.1:8000/docs खोलें।
from fastapi import FastAPI, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from pydantic import BaseModel
from typing import Optional
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
# --- Mock User & Token Logic (Simplified for this lesson) ---
class UserInDB(BaseModel):
username: str
hashed_password: str
disabled: Optional[bool] = None
class CurrentUser(BaseModel):
username: str
email: Optional[str] = None
full_name: Optional[str] = None
disabled: Optional[bool] = None
fake_users_db = {
"testuser": UserInDB(username="testuser", hashed_password="password123", disabled=False),
"disableduser": UserInDB(username="disableduser", hashed_password="securepass", disabled=True)
}
def get_user_from_db(username: str):
user_data = fake_users_db.get(username)
if user_data:
return CurrentUser(username=user_data.username, full_name=f"{user_data.username} Full", email=f"{user_data.username}@example.com", disabled=user_data.disabled)
return None
def authenticate_user(username: str, password: str):
user_in_db = fake_users_db.get(username)
if not user_in_db or user_in_db.hashed_password != password: # In real app, use password hashing
return None
return get_user_from_db(username)
def create_access_token(data: dict):
# In a real app, use `jwt.encode` with a secret key (from Lesson 1)
return f"mock_jwt_for_{data['sub']}"
# --- End Mock Logic ---
@app.post("/token")
async def login_for_access_token(
form_data: OAuth2PasswordRequestForm = Depends()
):
user = authenticate_user(form_data.username, form_data.password)
if not user:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Incorrect username or password",
headers={"WWW-Authenticate": "Bearer"},
)
if user.disabled:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="Inactive user"
)
access_token = create_access_token(data={"sub": user.username})
return {"access_token": access_token, "token_type": "bearer"}
# Dependency to get the current user from the token
async def get_current_user(token: str = Depends(oauth2_scheme)):
# In a real app, this would decode and validate the JWT (from Lesson 1)
if not token.startswith("mock_jwt_for_"):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Invalid authentication credentials",
headers={"WWW-Authenticate": "Bearer"},
)
username = token.replace("mock_jwt_for_", "")
user = get_user_from_db(username)
if user is None or user.disabled:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Invalid authentication credentials or inactive user",
headers={"WWW-Authenticate": "Bearer"},
)
return user
# A Protected Endpoint
@app.get("/users/me/", response_model=CurrentUser)
async def read_users_me(current_user: CurrentUser = Depends(get_current_user)):
return current_userget_current_user को समझना
get_current_user फ़ंक्शन एक महत्वपूर्ण निर्भरता है। यह दो मुख्य कार्य करता है:
- टोकन निकालना:
AuthorizationHeader से टोकन प्राप्त करने के लिएoauth2_scheme = Depends(OAuth2PasswordBearer(...))का उपयोग करता है। - उपयोगकर्ता का सत्यापन और प्राप्ति: टोकन को डिकोड और सत्यापित करता है, वास्तविक अनुप्रयोग में इसके लिए पाठ 1 के JWT तर्क का उपयोग किया जाएगा। मान्य होने पर यह संबंधित
Userऑब्जेक्ट प्राप्त करके लौटाता है। अमान्य या अनुपस्थित होने पर यहHTTPExceptionउत्पन्न करता है।
क्लाइंट किस तरह परस्पर क्रिया करते हैं
OAuth2 Password Flow में क्लाइंट की सामान्य परस्पर क्रिया इस प्रकार होती है:
- क्लाइंट, जैसे मोबाइल ऐप, फ़ॉर्म डेटा में उपयोगकर्ता नाम और पासवर्ड के साथ
/tokenकोPOSTअनुरोध भेजता है। - सफल होने पर API एक
access_tokenलौटाता है, जैसे{"access_token": "abc.123.xyz", "token_type": "bearer"}। - इसके बाद के सुरक्षित अनुरोधों के लिए क्लाइंट इस टोकन को
AuthorizationHeader में शामिल करता है:Authorization: Bearer abc.123.xyz।
त्वरित जाँच: OAuth2 के घटक
आने वाले लॉगिन अनुरोध के फ़ॉर्म डेटा से username और password को पार्स करने के लिए मुख्य रूप से कौन-सा FastAPI घटक ज़िम्मेदार है?
पुनरावलोकन: OAuth2 Password Flow
आपने FastAPI में OAuth2 Password Flow को सफलतापूर्वक एकीकृत कर लिया है!
- आपने
tokenUrlके साथOAuth2PasswordBearerको प्रारंभ किया। - आपने उपयोगकर्ता लॉगिन संभालने के लिए
OAuth2PasswordRequestFormका उपयोग करके/tokenendpoint बनाया। - आपने उपयोगकर्ताओं का प्रमाणीकरण करने और access token जारी करने का तरीका समझा।
- आपने access token निकालने और सत्यापित करने के लिए
get_current_userनिर्भरता का उपयोग करके endpoint सुरक्षित किए।
अगले चरण में आप उपयोगकर्ता की भूमिकाओं के आधार पर अधिक सूक्ष्म अनुमतियाँ जोड़ने के लिए Role-Based Access Control (RBAC) का अध्ययन कर सकते हैं!
एआई शिक्षक के साथ JavaScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 22
- पाठ
- 92
अक्सर पूछे जाने वाले प्रश्न
क्या “OAuth2 पासवर्ड फ़्लो एकीकरण” पाठ निःशुल्क है?
हाँ—“OAuth2 पासवर्ड फ़्लो एकीकरण” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Node.js बैकएंड विकास बूटकैंप पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Node.js बैकएंड विकास बूटकैंप पाठ्यक्रम में कुल 6 पाठ शामिल हैं।
“OAuth2 पासवर्ड फ़्लो एकीकरण” में मैं क्या सीखूँगा?
अपने FastAPI अनुप्रयोग में उपयोगकर्ता लॉगिन और टोकन प्राप्त करने के लिए OAuth2 पासवर्ड फ़्लो को एकीकृत करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Node.js बैकएंड विकास बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Node.js बैकएंड विकास बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Node.js बैकएंड विकास बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 6 में से 4वाँ पाठ है।
“OAuth2 पासवर्ड फ़्लो एकीकरण” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Node.js बैकएंड विकास बूटकैंप पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Node.js बैकएंड विकास बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- उपयोगकर्ता पंजीकरण और लॉगिन
- JWT टोकन बनाना और सत्यापन
- स्टेटलेस प्रमाणीकरण के लिए JWT
- OAuth2 पासवर्ड फ़्लो एकीकरण
- भूमिका-आधारित पहुँच नियंत्रण
- भूमिका-आधारित पहुँच नियंत्रण (RBAC)