2017-05-13 2 views
1

나는 자체 RESTful 앱에서 OAuth 2.0의 내부 동작을 배우려고 노력해 왔으며 Javascript 클라이언트가 프로세스를 처리하는 방법에 대한 좋은 설명을 찾을 수없는 것 같습니다.OAuth 2.0에서 고객의 책임 이해

이 시점에서 클라이언트 (Angular 2 SPA)에 사용자 이름과 암호 (Django Oauth Toolkit과 함께 Django Rest Framework 실행)를 묻습니다. 클라이언트는 서버 (특히/o/토큰)에 AJAX 게시를 만들고 자원 소유자 암호 자격 증명을 사용하여 자격 증명 흐름을 인증하고 토큰과 함께 응답을받습니다.

지금까지 모든 것을 올바르게 수행하고 있다고 가정 할 때, 그 시점에서 토큰을 올바르게 처리하는 방법을 확신 할 수 없습니다.

이 시점에서 내 Angular 앱에 토큰을 변수에 저장하고 API에 대한 호출에 권한 헤더 (토큰과 함께)를 첨부하도록하고 있습니다. 올바른 사용 권한을 부여하는 것으로까지 작동하지만 헤더의 지속성을 유지하는 방법을 이해하는 데 어려움이 있습니다. 따라서 사용자가 다른 페이지로 이동하면 토큰은 여전히 ​​호출 가능합니다. 처음에는 쿠키에 저장했지만 보안에 대한 우려가 있습니다.

그래서 먼저이 모든 것을 정확하게 이해하고 있습니까? 여기에 어떤 종류의 보안 문제를 고려해야합니까? 물론 클라이언트에 토큰을 저장하려면 어떻게해야합니까?

답변

0

예. 액세스 토큰을 영구해야하므로 사용자 세션 데이터로 저장해야합니다. 예를 들어 사용자가 사이트를 떠난 다음 다시 열면 자신이 로그인 한 것으로 간주됩니다.

세션을 서버 측으로 설정하면 사용자 에이전트가 세션 ID 만 저장하고 모든 사용자 데이터는 귀하의 데이터베이스. 사용자는 자신의 액세스 토큰을 필요로하지 않으며 응용 프로그램 만 액세스 토큰을 필요로하지 않습니다. 장고는 매우 간단 볼에 대한 서버 측 세션의 구현을위한

Instructions 은 : 데이터베이스 백업 세션을 사용하려면

, 당신은 당신의 INSTALLED_APPS 설정 'django.contrib.sessions'를 추가해야합니다.

설치를 구성했으면 manage.py migrate을 실행하여 세션 데이터를 저장하는 단일 데이터베이스 테이블을 설치하십시오.

관련 문제