2014-09-05 3 views
7

인증 토큰을 인증 서버에서 검색 한 후 AngularJS에 액세스 토큰을 저장하는 가장 좋은 방법은 무엇입니까? localStorage 서비스를 사용하기위한 많은 제안을 보았지만 토큰을 저장하기 위해 localStorage를 사용하지 않는다고 말하는 다른 게시물/블로그를 읽었습니다. 보안 성이 떨어졌습니다.AngularJS 액세스 토큰 보안 문제

내 머리를 감싸는 데 어려움을 겪고 있습니다. 위와 같은 혼합 된 정보로 인해 Angular로 보안합니다.

+0

좋은 생각이 지역의 제안이 무엇 링크 당신이해야합니까 저장하지? –

+0

나는 그 (것)들을 경편하지 않는다, 그러나 그들을 다시 위로 파고 할 것이다. 본인과 Dominick의 작업에 익숙하며 현지 저장소에 저장하는 것에 대한 의견을 듣고 싶습니다. 이게 당신이 추천 할만한 것입니까? – user3410575

+1

로컬 저장 장치가 어떻게 작동하는지 잘 알고있는 한 로컬 저장 장치는 괜찮다고 생각합니다. 어떤 점에서는 웹 사이트 로그인에 사용하는 영구 쿠키와 다르지 않습니다. –

답변

1

내가 생각

  1. 토큰 (서버 측에서 민감한 정보)
  2. 로그인을 생성하고 전용 서버에 알려진 컴퓨터 키를 사용하여 생성 된 토큰을 암호화합니다. 암호화 된 토큰을 가져옵니다.
  3. 그런 다음 2 단계에서 얻은 암호화 된 토큰을 쿠키에 저장하십시오.
  4. 쿠키 만료 기간은 매우 짧아야합니다. httponly 쿠키를 만드십시오.

쿠키

  1. 유효성 쿠키
  2. 기계 키
  3. 해독이 우리의 서버와 같은 CRC 검증을 통해 전송을 인증.
  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

나는 그것을하기 위해 노력하고있다. 일부 구현 세부 사항이 누락되었습니다. 나는 로그인 논리를 처리하고, 인증 쿠키를 설정 한 다음, 각도 응용 프로그램으로 리디렉션하는 asp.net mvc 응용 프로그램을 가지고 있습니다. 로그인 로직은 다른 서버의 웹 API에서 토큰 엔드 포인트를 호출하는 것을 포함합니다. 쿠키를 다시 가져 오면 쿠키에 토큰을 저장합니다. 하지만, 인증 토큰을 수동으로 넣지 않고 토큰을 webapi에 다시 보내려면 어떻게해야합니까? – user3410575