나는 우리의 웹 페이지 또는 네이티브 앱을 통해 로그인하는 일반 최종 사용자가 사용하는 하나의 공개 클라이언트와 우리의 관리 시스템을위한 하나의 기밀 클라이언트를 가지고 있습니다. 두 가지 모두 두 개의 JWT, 한 개의 액세스 토큰 및 한 개의 새로 고침 토큰을 발행합니다.스프링 oAuth2 impl을 사용하면 refresh-token grant 동안 액세스 토큰의 범위를 "다운 그레이드"할 수 있습니까?
공개 클라이언트은 관리자 권한을 부여 할 수 없습니다. 액세스 토큰은 수명이 짧으며 새로 고침 토큰의 수명은 무한합니다.
기밀 클라이언트은 관리 범위를 발행 할 수 있습니다. 액세스 토큰은 수명이 짧으며 새로 고침 토큰은 24 시간 동안 유효합니다.
스프링 보안과 oAuth2 구현을 사용하여 새로 고침 토큰이 만료되면 관리자를 다운 그레이드 할 수 있습니까? 즉, 사용자가 24 시간 동안 로그인하면 사용자는 완전히 로그 아웃되지는 않지만 다음 로그인에서는 일반 사용자 액세스를위한 하나의 액세스 토큰과 해당 액세스 레벨의 일치하는 새로 고침 토큰 하나를 두 가지 새 JWT로 가져옵니다. 나는 봄 보안 프레임 워크에서 사용자 정의 방식으로 토큰 만기를 처리 할 수있는 몇 가지 종류의 훅을 찾고 있다고 생각한다.
"다음 로그인"을 사용하면 실제로 "다음 백엔드와의 상호 작용"에 대해 미안합니다. 나는 새로 고침 토큰의 범위를 변경할 수 없다는 사실이 정말로 내 질문에 답하는 것 같다. 관리자 상호 작용이 너무 많지 않으면 제안서가 좋습니다. 그런 다음 분산 인증의 이점을 잃어 버리고 계정 서비스의로드가 증가합니다. 다시 세션 캐시로 끝날 수 있습니다 ... 새로 고침 토큰 패턴을 사용하지 않는 경우 사용자가 JWT에 로그인 한 상태로 유지하면서 토큰 해지를 계속할 수 있습니까? 이름 + PW로 로그인 한 사용자를 어떻게 차단할 수 있습니까? –
베어러 토큰 (자체 포함 JWT)을 사용하는 것에 대한 단점 중 하나는 토큰 취소가 더욱 복잡해지기 때문에 RFC 7009에서는 이러한 상황에서 인증 서버와 리소스 서버 간의 백엔드 상호 작용을 사용하여 즉각적인 액세스 토큰 취소. 나는 그 상호 작용을 다루는 표준이 있다고 생각하지 않는다. –