2014-09-05 23 views
7

Bir yetkilendirme sunucusundan alındıktan sonra AngularJS'de bir erişim belirteci depolamak için en iyi uygulama nedir? LocalStorage hizmetini kullanmak için pek çok öneri gördüm, ancak daha sonra, tokenleri depolamak için localStorage'ı kullanmamak için başka yayınları/blogları okudum, bu güvenli değil vb.AngularJS Access Token Güvenlik Sorunları

Başımı saran zor bir zaman geçiriyorum Yukarıdaki gibi karışık bilgiler nedeniyle açısal güvenlik.

+0

iyi bir fikir yerel önermek Bu nedir bağlantıları var mı depolama değil mi? –

+0

Onları elimde kullanmıyorum ama tekrar kazacağım. Senin ve Dominick'in çalışmalarına aşinayım ve yerel depoda saklamakla ilgili fikrinizi duymak isterim. Tavsiye edeceğin bir şey mi? – user3410575

+1

Tüm bunların nasıl çalıştığını bildiğiniz sürece yerel depolama alanı iyi görünüyor. Bir anlamda, bir web sitesi girişi için kullandığınız kalıcı bir çerezden farklı değil. –

cevap

1

sanırım

  1. belirteci (sunucu tarafında hassas bilgileri)
  2. Sign oluşturun ve yalnızca sunucuya bilinen makine anahtarla oluşturulan belirteci şifreleyin. Ve şifrelenmiş jetonu al.
  3. Daha sonra, çerezlerde adım 2'de elde edilen şifreli jetonu kaydedin.
  4. Çerezlerin son kullanma tarihi çok düşük olmalıdır. Httponly çerez yap.

Cookie'ye

  1. doğrula çerez
  2. makine anahtarı ile
  3. azalmak ve sadece bizim sunucu tarafından ve aynı crc ile gönderilir doğrulamak doğrulamak.
  4. Yukarıdaki adım 2 ise, elde edilen belirteci doğrulayın.

angularjs otomatik her $ http isteğinde başlıkları eklemek,

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

Sadece bunu yapmaya çalışıyorum. Eksik olduğum bazı uygulama detayları var. Sadece giriş mantığını idare eden, bir auth çerezini ayarlayan ve daha sonra açısal uygulamaya yönlendiren bir asp.net mvc uygulamasına sahibim. Giriş mantığı, farklı bir sunucudaki bir web api üzerinde bir belirteç son noktasını çağırmayı içerir. Bunu geri aldığımda, o jetonu çerezde saklıyorum. Ancak, bu belirteci webapi'ye elle bir yetkilendirme başlığına yerleştirmeden köşeli olarak nasıl geri gönderirim? – user3410575