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

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이 되면 종료

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