एक नए नोड.जेएस प्रोजेक्ट के लिए, जिस पर मैं काम कर रहा हूं, मैं कुकी आधारित सत्र दृष्टिकोण से स्विच करने के बारे में सोच रहा हूं (इसके द्वारा, मेरा मतलब है कि उपयोगकर्ता के ब्राउज़र में उपयोगकर्ता सत्र वाले कुंजी-मूल्य स्टोर में आईडी संग्रहीत करना) JSON वेब टोकन (jwt) का उपयोग करके टोकन-आधारित सत्र दृष्टिकोण (कोई कुंजी-मूल्य स्टोर) नहीं।
प्रोजेक्ट एक ऐसा गेम है जो सॉकेट का उपयोग करता है ।io - एक टोकन-आधारित सत्र होना ऐसे परिदृश्य में उपयोगी होगा जहां एक सत्र (वेब और सॉकेट.आईओ) में कई संचार चैनल होंगे।
Jwt दृष्टिकोण का उपयोग करके सर्वर से टोकन / सत्र अमान्य कैसे प्रदान किया जाएगा?
मैं यह भी समझना चाहता था कि इस तरह के प्रतिमान के साथ मुझे क्या आम (या असामान्य) नुकसान / हमले देखने चाहिए। उदाहरण के लिए, यदि यह प्रतिमान सत्र स्टोर / कुकी-आधारित दृष्टिकोण के समान / विभिन्न प्रकार के हमलों के लिए असुरक्षित है।
तो, कहते हैं कि मेरे पास निम्नलिखित है ( इस और इस से अनुकूलित ):
सत्र स्टोर लॉगिन:
app.get('/login', function(request, response) {
var user = {username: request.body.username, password: request.body.password };
// Validate somehow
validate(user, function(isValid, profile) {
// Create session token
var token= createSessionToken();
// Add to a key-value database
KeyValueStore.add({token: {userid: profile.id, expiresInMinutes: 60}});
// The client should save this session token in a cookie
response.json({sessionToken: token});
});
}
टोकन-आधारित लॉगिन:
var jwt = require('jsonwebtoken');
app.get('/login', function(request, response) {
var user = {username: request.body.username, password: request.body.password };
// Validate somehow
validate(user, function(isValid, profile) {
var token = jwt.sign(profile, 'My Super Secret', {expiresInMinutes: 60});
response.json({token: token});
});
}
-
सत्र स्टोर दृष्टिकोण के लिए एक लॉगआउट (या अमान्य) निर्दिष्ट टोकन के साथ KeyValueStore डेटाबेस के लिए एक अद्यतन की आवश्यकता होगी।
ऐसा लगता है कि इस तरह का तंत्र टोकन-आधारित दृष्टिकोण में मौजूद नहीं होगा क्योंकि टोकन में ही वह जानकारी होगी जो सामान्य रूप से कुंजी-मूल्य स्टोर में मौजूद होगी।
isRevoked
विकल्प देख सकते हैं , या समान कार्यक्षमता को दोहराने का प्रयास कर सकते हैं। github.com/auth0/express-jwt#revoked-tokens