2015-01-02 2 views
1

성공적인 로그인 후 JWT를 제외한 다른 사용자 정보를 localstorage 또는 쿠키에 저장하는 것이 좋습니다. (사용자 프로필 개체는 이미 jwt payload 하위 파트에 저장되고 암호화되어 있습니다.) 사용자 프로필 개체가 준비되어 있어야합니다 (사용자 역할, 로그인 상태 가져 오기 등).로그인 후 각도 JWT 및 사용자 정보 저장

클라이언트 측에서 JWT 만 저장하는 경우 토큰 비공개가 서버에 있으므로 (전체 페이지 새로 고침 이후에만) 서버 측의 JWT 디코딩에서 사용자 정보를 얻기 위해 앱로드 전에 추가로 아약스 요청이 하나 필요합니다. 토큰은 유효하거나 유효하지 않으므로이 경우 처리 오류가 훨씬 쉽습니다.

JWT 및 사용자 프로필 개체를 클라이언트 측 저장소의 문자열로 저장하면이 작업이 번거롭고 사용자가 해당 개체와 응용 프로그램을 수동으로 변경할 수 있습니다.

성공적으로 로그인 한 후 클라이언트 측의 저장소에 JWT 만 저장하는 것을 선호하지만이 경우 코드를 구성하는 방법에 대한 조언이 필요합니까? 전체 페이지를 새로 고친 후 사용자 프로필 개체를 가져 오는 방법은 무엇입니까?

도와주세요.

+0

JWT를 사용하면 토큰의 헤더와 페이로드 모두에 소유권을 주장 할 수 있습니다. JWT를 사용하면 헤더가 서명 된 동안 페이로드를 암호화 할 수 있습니다. 그렇게하면 클라이언트 응용 프로그램 (여기서는 브라우저에 표시)이 토큰 내부에서 읽을 수있는 정보를 넣을 수 있으며 다른 정보는 비밀로 유지하고 서버에서만 사용할 수 있습니다. – eskatos

답변

0

편의상 JWT 만 저장하고 사용자 프로필을 가져 오기 위해 추가 ajax 호출을 구현했습니다.

그러나이 호출을 절대적으로 피하려면 JWT 생성을 제어한다고 가정 할 때 암호화 된 JWT 대신 비대칭 서명 된 JWT를 사용하고 클라이언트 측에서 데이터를 추출하는 것이 좋습니다.

1

가장 안전한 해결책은 JWT를 HTTPS 전용 쿠키에 저장 한 다음 서버에서 사용자 개체를 가져 오도록 요청하는 것입니다.

서버에 대한 추가 호출을 피하려면 창의력을 발휘해야합니다. 내가 시도하고있는 한 가지 접근법은 JWT의 클레임 본문을 클라이언트에 저장하는 것입니다. 본문 만 서명하면 제외됩니다. 서명이 제외되면 "토큰"은 더 이상 JWT가 아니며 인증에 사용할 수 없으므로 실제 액세스 토큰이 로컬 저장소에서 도난당하는 것을 방지합니다. 정보가 불투명하고 (로컬 스토리지가 XSS 공격에 취약합니다) 개인적으로 사용자에 대한 식별 정보 (PII)를 포함하지 않는

1) :

그러나이 주장 본체에 대해 두 가지를 가정 않습니다.

2)이 객체가 (당신이 그것을가 API에 의해 보호되어야한다, 당신의 각도 응용 프로그램에서 민감한 정보를 저장 안)

3 로컬 스토리지에서 변경되는 경우에 사용자에게 중요한 정보를 유출하지 않습니다 각도 응용 프로그램 Token Based Authentication for Single Page Apps을 :) 모든 쿠키 기반 인증 전략과 마찬가지로 CSRF Attacks

내가 Stormpath에서 일을하고 나는 최근이 매우 주제에 대한 블로그 게시물을 작성한 사람으로부터 자신을 보호하고 있습니다.

희망이 도움이됩니다.