2012-07-17 1 views
4

나는 세션 메모리 저장소를 사용하여 인증을 처리하는 express에 내장 된 매우 간단한 node.js 응용 프로그램을 보유하고 있습니다. 기본적으로 사용자에 의해 기록 :SPA 및 node.js 서버에 대한 인증

app.post('/sessions', function(req, res) { 
      // check username/password and if valid set authenticated to true 
     if (authenticated){ 
      req.session.user = req.body.username; 
       } ... 
}); 

이어서 세션 해당 사용자 속성이 설정되어 있는지 확인하는 requiresLogin 미들웨어 함수가 호출되는 브라우저마다 호출된다.

이제 앱을 기본적으로 브라우저에서 사용되거나 사용되지 않을 수도있는 서비스를 제공하도록 전환 중입니다. 따라서 쿠키/세션을 사용하는 대신 시스템을 변경하여 사용자가/getToken (/ sessions 대신에) 사용자의 계정과 연관된 일시적인 임의의 토큰을 반환합니다.이 토큰은 일정 기간 동안 서비스에 액세스 할 수 있습니다. 서비스를 사용하면 각 호출에 유효한 토큰이 포함되어야합니다. (토큰을 얻기 위해 호출 한 후에 클라이언트 컴퓨터의 메모리에 암호를 저장할 필요가 없도록 사용자 이름/암호를 매번 전달하는 것보다이 방법이 좋을 것이라고 가정합니다.)

그런 시스템은 기본적으로 위의 현재 시스템만큼 안전하거나 이것을 처리 할 훨씬 더 표준/안전한 방법이 있습니까? 이런 식으로 처리하는 표준 방법은 무엇입니까?

도움을 주셔서 감사합니다.

답변

6

당신이 찾고있는 것을 HMAC라고하며 서비스 구현 방법에 대한 아이디어를 얻으려면 훌륭한 문서 here이 있습니다.

세션 기반 보안이 공용/개인 키 쌍보다 안전한지 여부는 광범위하게 논의되며 구현/응용 프로그램에 따라 달라집니다. 귀하의 경우, 공용 향함 API에 대한 요청마다 인증을 원하기 때문에 HMAC를 사용할 수 있습니다.

+1

감사합니다. 매우 흥미로운 기사였습니다! –