웹 권한관리 - Linux Chmod 스타일 - 숫자 권한 구분

less than 1 minute read

JWT토큰 ACL 기능 설계중에
payload를 짧게 만들려고 생각하다가 나온 부분

웹사이트 화면이나 API에서 사용할 수 있는 권한의 종류

VIEW READ WRITE MODIFY DELETE EXECUTE

서비스에 따라 좀 다른 형태가 추가될 가능성도 있지만 숫자를 늘리면 된다

Chmod Style

-– user — r 400 w 200 x 100 — group — r 40 w 20 x 10 — other — r 4 w 2 x 1

여기서 숫자 규칙은..

어떤숫자 조합을 더해도 중복숫자가 없어야한다.

권한에 숫자 부여

VIEW 1 READ 2 WRITE 4 MODIFY 8 DELETE 16 EXECUTE 32

ex1) VIEW,READ = 3
ex2) READ,MODIFY = 10

이런식으로 1개 늘어날 때 마다 숫자가 2배씩 커지고
필요한 권한을 더해서 숫자로 payload에 넣어주면 된다

숫자를 더 줄일 규칙이 있는지 찾아봐야겠다

간단히 계산하는 법

VIEW, READ, WRITE 다 더해도 MODIFY보다 작다.
권한숫자 = AuthNum = AN

ex1) AN = 16 — 16

큰 숫자부터 하나씩 빼서 -가 되면 다음,
+가 나오면 권한체크
0이 되면 종료

근데 어차피 권한이 많지 않으니 매번 계산하는 것 보다 저장 해 놓고 쓰는게 낫겠다.