배경 : 파일 서버를 만들고 있습니다. 내가 Nginx 역방향 프록시 뒤에 톰캣을 사용하고 있습니다. UI를 호스팅하는 메인 서버와 사용자가 업로드 한 파일을 저장하고 다시 서비스 할 수있는 많은 에지 서버가 있습니다. 개인 파일 저장소이므로 파일 업 로더 만 업로드 한 파일을 다운로드 할 수 있습니다.서버 간 사용자 요청 유효성 확인
문제점 : 세션을 생성하여 계정에 로그인 할 때 주 서버의 사용자를 인증하고 사용자의 추가 요청 (일반 사항)의 유효성을 검사하도록 사용자를 유지합니다. 이 정보는 에지 서버에 적합하지 않으며 에지 서버는 모든 요청에 대해 파일을 제공합니다. 그건 내가 원하는 것이 아니야. 파일 소유자에게만 다운로드 권한을 부여하려고합니다.
이제 여기서는 가장자리와 주 서버가 세션이 분산 된 클러스터로 구성되는 Tomcat 클러스터링을 피하려고합니다. 사이트가 SSL을 지원합니다. 주 서버에 이미 로그인 한 (세션을 생성 한) 사용자로부터 파일 다운로드 요청이 에지 서버에 도달하면 사용자의 로그인 상태를 확인하는 방법이 있습니까?
신뢰 경계는 어디에 있습니까? 메인에서 에지로의 사용자 요청은 단순히 userId를 포함 할 수 있으며, Edge는 파일을 다시 제공하기 전에 그것을 검증 할 수 있습니까? 아니면 주어진 사용자가 허용되지 않을 때 Unauthorized 401를 리턴 할 수 있습니까? 또는 서버 (관리자, 운영자, 직원 등)에 대한 액세스 권한이있는 사용자에 대해서도 가능한 한 사용자 파일을 안전하게 만들어야합니까? – diginoise
중간에 있습니다. userId는 너무 약해서 어떤 사람은 그것을 추측 할 수 있습니다. 파일에 대한 관리자 액세스를 허용하지 않으려면 파일 소유자 만 알고있는 키를 사용하여 전체 파일을 암호화하고 클라이언트 브라우저에서 해독해야합니다.내가 원하는 것은 파일을 직접 사용하여 인터넷을 통해 파일을 다운로드하지 못하도록하는 것입니다 (소유자 이외). – printfmyname
메인 서버의 개인 키로 암호화 된 세션 만료 시간이있는 쿠키. 에지 서버는 메인의 공개 키를 사용하여 쿠키를 해독합니다. – diginoise