2016-08-21 7 views
-1

현재 스프링 부트를 사용하여 REST API를 작성 중입니다. 현재 API는 JavaFX 응용 프로그램에 JSON 데이터를 전달합니다. API는 Angular 응용 프로그램에서 액세스 할 수 있습니다. 아마도 사용자가 새로운 사용자를 만들 수 없으며, 책임은 sysadmin과 함께있을 것이라는 점도 주목할 가치가 있습니다. 이 API 유형의 인증에 대해 궁금합니다.데스크톱 API와 함께 사용할 Rest API 보안

일반 아이디어는 사용자에게 시스템의 모든 데이터에 대한 액세스 권한을 부여하는 권한 수준이 한 가지가된다는 것입니다. 이 인증을 어떻게 구현해야하는지 궁금합니다. (스프링 보안, OAuth 등)으로 조사한 솔루션의 대부분은 클라이언트 측 애플리케이션이 브라우저에서 실행되지 않기 때문에 작동하지 않는 것처럼 보입니다.

현재 요청마다 클라이언트 쪽에서 사용자 세부 정보를 전달하고 데이터베이스에 표시된 암호의 해시를 검사합니다.

그래서 제 질문은, 내가 상관없이 등 쿠키에 대한 액세스 권한이없는 브라우저에서 실행하고 같은되지 않습니다 응용 프로그램, HTTP 세션

+0

"... 클라이언트 측 응용 프로그램이 브라우저에서 실행되지 않으므로 작동하지 않는 것처럼 보입니다." 왜 이걸 생각하니? OAuth 또는 이들 중 하나를 전체 응용 프로그램에서 사용할 수 있습니다. 클라이언트 측만 구현하면됩니다. 모든 클라이언트는 쿠키 등에 액세스 할 수 있습니다. 간단한 암호화 된 쿠키 메커니즘 또는 OAuth가 사용자의 요구에 맞습니다. – Kylar

+0

스프링 보안은 비 웹 또는 비 브라우저 애플리케이션에서 작동합니다. –

답변

0

을 보호하는 방법 클라이언트는 데스크탑 인 경우 앱, 모바일 앱 또는 웹 앱과 동일한 원칙을 RESTful API 인증에 적용 할 수 있습니다.

일반적으로 토큰은 클라이언트 측에 저장되고 만료 될 때까지 사용됩니다 (따라서 새로 고쳐야 함). 그런 다음 토큰을 인증 헤더에 베어러 토큰으로 포함 시키면 각 API 호출이 그림에서 쿠키를 완전히 제거합니다.

JWT를 사용하는 사람들은 base64로 인코딩 된 다음 JSM 구조가 변경된 것을 막기 위해 서명 한 JSON 구조를 좋아합니다. JWT를 사용하면 지속성 계층에서 자유로 우며 Redis 또는 다른 키/값 저장소에 의존하지 않고도 분산 인증 프레임 워크를 구축 할 수 있습니다. 필요한 것은 비밀 또는 개인 키뿐입니다. JWT의 단점 중 하나는이 스타일에 사용되지만 토큰이 만료 될 때까지 유효하므로 토큰을 블랙리스트에 추가하는 것이 더 어렵습니다. 토큰 자체는 아마도 불투명 토큰보다 클 것입니다.

사용하는 기술에 따라 토큰이 서명되었는지 확인하거나 사용자/세션 정보 서버 측을 조회 할 수 있습니다.

관련 문제