사람들은 일반적으로 JWT에 사용 권한을 저장합니까? admin: true
또는 scopes: ['add_foo', 'delete_foo', 'read_foo']
일 수있는 예를 보았습니다. 그리고 이것은 괜찮아 보이는데 다른 것들은 JWT가 많은 허가/범위가있는 경우 잠재적으로 큰 크기가 될 수 있다는 것입니다. JWT가 검증 될 수있는 한 사용자 권한을 얻기 위해 DB 또는 캐시를 칠 필요가 없으므로 실제로 유용 할 것 같습니다.권한에 대한 JWT 무효화
내 주요 질문은 어떻게 이러한 권한이 변경되는 경우 무효화됩니다 것입니다.
예를 들어, sys admin Joe는 사용자 Bob으로부터 'add_foo'및 'delete_foo'권한을 취소하지만 'read_foo'권한을 유지합니다. 이 시나리오에서 사용자 Bob은 자신의 토큰이 완전히 무효화되어 다시 로그인 할 필요가 없습니다. 기본적으로 새 권한으로 새 JWT를 가져와 정상적으로 수행해야합니다.
암호 변경시 새 JWT를 발행하는 방법을 설명하는 예제를 보았습니다. 그러나 sysadmin Joe가 사용자 Bob에게 업데이트를 수행한다는 차이점이 있습니다. 따라서 사용자 Bob이 새 토큰을 즉시 가져올 수있는이 워크 플로에는 기회가 없습니다.
대부분의 예제는 취소 된 토큰의 검은 목록을 유지하거나 DB 레코드 ID를 변경하여 토큰이 더 이상 유효하지 않게하거나 사용자 별 암호를 가지고 변경하는 무효화를 제안합니다.
나는 이들 모두가 토큰을 취소하고 유효하지 않은지 테스트하기 위해 작동하지만 사용자가 새 토큰을 얻는 방법을 알 수 있습니까? 현재 JWT가 유효하지 않습니까? 그것으로 무엇인가하려고하면 실패합니다.
"새로 고침 토큰"에 대한 언급을 보았습니다. 이것들이 널리 사용됩니까? 그들은 웹상에서 안전하고 새로 고침 토큰을 얻기가 더 어려운 모바일 앱에 주로 사용됩니다. 브라우저 dev 도구 등을 통해 새로 고침 토큰을 훔치는 것이 비교적 쉽고 승인되지 않은 액세스가 감지되고 새로 고침 토큰이 취소 될 때까지 누군가 그 계정에 영원히 액세스 할 수있는 것처럼 보입니다.
어쩌면이 시나리오에서 사용자 Bob에게 재 인증을 강요하는 것이 그리 큰 문제는 아니겠습니까? 권한이 너무 자주 변경되지는 않습니다.
감사합니다. 마이크.