2014-09-05 6 views
7

प्राधिकरण सर्वर से पुनर्प्राप्त होने के बाद AngularJS में एक्सेस टोकन संग्रहीत करने का सबसे अच्छा अभ्यास क्या है? मैंने स्थानीय स्टोरेज सेवा का उपयोग करने के लिए कई सुझाव देखे हैं, लेकिन फिर मैंने अन्य पोस्ट/ब्लॉग पढ़े हैं जो कभी भी टोकन स्टोर करने के लिए स्थानीय स्टोरेज का उपयोग नहीं करते हैं, यह सुरक्षित नहीं है।कोणीय जेएस एक्सेस टोकन सुरक्षा चिंता

मुझे अपने सिर को चारों ओर लपेटने में कठिनाई हो रही है ऊपर की तरह मिश्रित जानकारी के कारण कोणीय के साथ सुरक्षा।

+0

कि स्थानीय सुझाव है क्या लिंक आप की क्या ज़रूरत है भंडारण एक अच्छा विचार नहीं है? –

+0

मेरे पास उन्हें आसान नहीं है, लेकिन उन्हें फिर से खोद जाएगा। मैं आपके और डोमिनिक के काम से परिचित हूं और स्थानीय भंडारण में इसे संग्रहीत करने पर आपकी राय सुनना पसंद करूंगा। क्या आप ऐसा कुछ सुझाएंगे? – user3410575

+1

मुझे लगता है कि स्थानीय भंडारण ठीक है, जब तक आप जानते हैं कि यह सब कैसे काम करता है। एक अर्थ में, यह एक वेबसाइट कुकी के लिए उपयोग की जा रही एक सतत कुकी से अलग नहीं है। –

उत्तर

1

मुझे लगता है,

  1. टोकन (सर्वर साइड पर संवेदनशील जानकारी)
  2. साइन उत्पन्न और मशीन कुंजी जो केवल सर्वर के लिए जाना जाता है के साथ जेनरेट किया गया टोकन एन्क्रिप्ट करें। और एन्क्रिप्टेड टोकन प्राप्त करें।
  3. फिर कुकीज़ में चरण 2 पर प्राप्त एन्क्रिप्टेड टोकन को सहेजें।
  4. कुकीज़ की समाप्ति बहुत कम होनी चाहिए। Httponly कुकी बनाओ।

जब कुकी

  1. मान्य कुकी
  2. मशीन कुंजी के साथ
  3. डिक्रिप्ट और सत्यापित करें कि यह केवल हमारे सर्वर से और एक ही सीआरसी के साथ भेजा जाता है के सत्यापन।
  4. यदि ऊपर चरण 2 अच्छा है तो प्राप्त टोकन प्रमाणीकृत करें।

AngularJS स्वचालित रूप से प्रत्येक $ http अनुरोध में हेडर जोड़ने के लिए,

AngularAppFactory.GetApp=function(appName){ 
    var app = angular.module(appName, []); 

    app.factory('httpRequestInterceptor', ['$rootScope', function($rootScope) 
    { 
     return { 
      request: function($config) { 
      if($rootScope.user.authToken) 
      { 
       $config.headers['id'] = $rootScope.user.id; 
       $config.headers['auth-token'] = $rootScope.user.authToken; 
      } 

      return $config; 
     } 
    }; 
    }]); 

    app.config(function ($httpProvider) { 
     $httpProvider.interceptors.push('httpRequestInterceptor'); 
    }); 

    return app; 
} 



//Whenever you need to get new angular app, you can call this function. 
app = AngularAppFactory.GetApp('appName'); 
+0

मैं बस ऐसा करने की कोशिश कर रहा हूं। कुछ कार्यान्वयन विवरण हैं जो मुझे याद आ रही हैं। मेरे पास एक एएसपीएनटी एमवीसी ऐप है जो सिर्फ लॉगिन तर्क को संभालता है, एक ऑथ कुकी सेट करता है, और उसके बाद कोणीय ऐप पर रीडायरेक्ट करता है। लॉगिन तर्क में एक अलग सर्वर पर एक वेब एपीआई पर टोकन एंडपॉइंट को कॉल करना शामिल है। जब मैं इसे वापस लेता हूं तो मैं कुकी में उस टोकन को स्टोर करता हूं। लेकिन, मैं उस टोकन को वेबपैली से कोणीय से मैन्युअल रूप से प्राधिकरण शीर्षलेख में डालने के बिना कैसे भेजूं? – user3410575

संबंधित मुद्दे