SERIESPonsLink Product Operations
[PonsLink] 요청 상태 토큰과 세션 입장 토큰을 같은 것으로 둘 수 없었다
·2 min read·1077 views
PonsLinkSecurityTokenPermission
요청 상태를 보는 토큰과 세션에 입장하는 토큰을 처음에는 비슷하게 취급했다. 하지만 상태 링크가 유출됐다고 입장 권한까지 열려서는 안 된다. 입장 토큰이 오래 살아 있으면 끝난 방에 다시 들어오는 문제도 생긴다.

같은 토큰으로 해결하지 않기
상태 토큰은 읽기와 짧은 수명, 좁은 스코프를 가져야 했다. 입장 토큰은 승인과 결제 이후에 세션 단위로 발급하고, 방이 끝나거나 권한이 바뀌면 폐기할 수 있어야 했다. 이름이 비슷해도 책임은 달랐다.

권한 경계가 제품 흐름을 만든다
토큰을 하나로 줄이면 코드가 잠시 단순해 보인다. 그 대신 상태 확인과 세션 입장이 같은 권한을 공유하게 된다. 결제나 승인 흐름이 들어오면 이 단순화는 곧 설명할 수 없는 예외가 된다. 토큰을 아끼는 것보다 어떤 행동을 허용하는지 분리하는 편이 안전했다.

상태를 읽을 수 있다는 것과 방에 들어갈 수 있다는 것은 사용자 경험에서도 다른 약속이다. 서버와 화면 모두 이 차이를 유지해야 권한 변경과 만료를 예측할 수 있다.
마치며
권한 경계는 토큰 이름의 문제가 아니라 허용할 행동의 문제다. 상태 조회와 세션 입장을 나누는 작은 분리가, 결제와 승인 이후의 흐름을 설명 가능한 상태로 만든다.