# "auth" 대신 "permissions"와 "login"을 사용합시다

> Clean Markdown view of GeekNews topic #15051. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15051](https://news.hada.io/topic?id=15051)
- GeekNews Markdown: [https://news.hada.io/topic/15051.md](https://news.hada.io/topic/15051.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-05-28T09:46:35+09:00
- Updated: 2024-05-28T09:46:35+09:00
- Original source: [ntietz.com](https://ntietz.com/blog/lets-say-instead-of-auth/)
- Points: 25
- Comments: 8

## Topic Body

- "auth"라는 용어는 인증(authentication)과 권한 부여(authorization) 두 가지 의미를 가짐  
- 이로 인해 라이브러리나 패키지 이름에서 혼란이 발생함  
- "authn"과 "authz"라는 용어는 명확하지 않고 이해하기 어려움  
  
### 인증과 권한 부여의 차이  
- 인증(authentication): 사용자가 누구인지 확인하는 과정  
- 권한 부여(authorization): 사용자가 무엇을 할 수 있는지 결정하는 과정  
- 두 개념은 서로 다르며, 하나를 해결한다고 다른 문제가 해결되지 않음  
  
### "permissions"와 "login" 사용 제안  
- 인증을 "login"으로, 권한 부여를 "permissions"로 명확히 구분할 것을 제안함  
- "login"은 명사와 동사 형태로 사용 가능함  
  - 명사: 시스템에 접근하기 위해 입력하는 정보  
  - 동사: 시스템을 사용하기 위해 로그인하는 행위  
- "permissions"는 명사 형태로 사용하며, 동사 형태로는 "check permissions"를 사용함  
  
### 명확한 용어 사용의 장점  
- 소프트웨어 엔지니어 외의 다른 분야 사람들도 쉽게 이해할 수 있음  
- 더 나은 추상화를 가능하게 함  
- 인증과 권한 부여를 별도의 모듈로 분리하여 설계할 수 있음  
  
### GN⁺의 의견  
- **명확한 용어 사용의 중요성**: 용어가 명확하면 커뮤니케이션이 원활해지고, 오해를 줄일 수 있음.  
- **추상화의 이점**: 인증과 권한 부여를 분리하면 시스템 설계가 더 유연해지고 유지보수가 쉬워짐.  
- **다른 용어의 사용 예시**: "login"과 "permissions" 외에도 "access control" 같은 용어도 고려해볼 만함.  
- **기술 도입 시 고려사항**: 새로운 용어를 도입할 때는 팀 내에서 충분한 논의와 합의가 필요함.  
- **관련 프로젝트 추천**: 인증과 권한 부여를 분리한 대표적인 프로젝트로는 OAuth와 OpenID Connect가 있음.

## Comments



### Comment 25699

- Author: savvykang
- Created: 2024-05-29T11:10:31+09:00
- Points: 2

개발자끼리는 auth 대신 authn, authz를, 사용자와 접점이 있는 문서나 컨트롤러/파사드에 login, permission을 사용하는건 동의할 만 합니다. 다만 authn, authz까지 없애자는 건 그럴 필요가 있나 싶습니다

### Comment 25693

- Author: gcback
- Created: 2024-05-29T09:54:07+09:00
- Points: 2

본문에 지적하듯이 auth가 인증과 권한을 중의적으로 사용되어 혼란스럽긴 했었죠. 순순한 개발자 외 다른 분야와 comm을 위해 좀 더 일반적인 용어를 통해 분리하는 건 바람직한 시도 같습니다.

### Comment 25682

- Author: nemorize
- Created: 2024-05-28T23:25:15+09:00
- Points: 1

Authentication 과 Authorization 둘 다 Auth 로 줄일 수 있는게 문제라면,  
본문에서 언급됐던 것 같이 Authn, Authz 로 충분할거 같은데 말이죠...  
이게 명확하지 않다 생각했다면, Authenty, Authory 까지 좀 더 풀어도 괜찮을거구요.

### Comment 25678

- Author: koxel
- Created: 2024-05-28T20:16:44+09:00
- Points: 1

권한 시스템은 또 퍼미션 형태가 있고 acl 형태가 있고 또 그러면 어찌 구분하려고..?  
뭔가 억지 같은데...

### Comment 25676

- Author: namarie32ilu
- Created: 2024-05-28T19:04:50+09:00
- Points: 1

아마 비개발팀원과의 소통비용을 줄이려는 시도 아닌가 싶습니다만, 살짝 투머치네요.

### Comment 25658

- Author: iolothebard
- Created: 2024-05-28T12:01:56+09:00
- Points: 2

일부러 둘을 합쳐서 auth라고 하는 거 아닌가요?

### Comment 25656

- Author: kuber
- Created: 2024-05-28T11:21:39+09:00
- Points: 1

Authentication 과 authorization 이 있는데 왜 굳이...

### Comment 25648

- Author: neo
- Created: 2024-05-28T09:46:36+09:00
- Points: 2

###### [Hacker News 의견](https://news.ycombinator.com/item?id=40491480) 
- **"Authorize"와 "Authenticate"는 중세 시대부터 사용된 훌륭한 단어임**. 두 단어의 의미는 크게 변하지 않았음. 
- **이 두 단어는 암호 시스템에서 중요한 차이를 가짐**. 혼동을 줄이기 위해 단어를 바꾸는 것은 도움이 되지 않을 것 같음.
- **"auth"라는 이름 때문에 혼란이 생긴다는 주장은 설득력이 부족함**. 단어를 바꾸는 것이 문제를 해결하지 못할 것 같음.
- **"authn"과 "authz"라는 약어를 사용하는 것이 좋음**. 하지만 긴 단어를 사용하는 것도 괜찮음.
- **"Identity"와 "Access" Management (IAM)는 표준 용어임**. 개인적으로 "authnz"라는 용어를 선호함.
- **"Login"은 토큰이나 키 기반 인증을 포함하지 않음**. 서비스 계정은 로그인하지 않지만 인증과 권한 부여가 필요함.
- **Authn과 Authz의 구분이 명확하지 않음**. 때로는 명확한 용어보다 멋진 용어를 더 좋아하는 것 같음.
- **IAM 시스템에서 "auth"라는 용어를 사용하는 데 문제가 없었음**. 더 구체적인 표현이 필요할 때는 적절한 구를 사용하면 됨.
- **"login"과 "permissions"는 시스템의 전체 의미와 복잡성을 포착하지 못함**. 인증은 로그인보다 더 많은 의미를 가짐.
- **인증과 권한 부여는 밀접하게 관련되어 있음**. 인증 없이 권한 부여가 불가능함.
- **로그인은 인증의 대체 용어로 적합하지 않음**. 인증에는 로그인이 필요하지 않은 경우도 있음.
- **"auth"는 인증과 권한 부여를 모두 의미할 수 있음**. 두 개념이 자주 함께 사용되기 때문임.
- **인증과 권한 부여는 IT와 정보 보안에서 표준 용어임**. 혼란을 피하려면 완전한 단어를 사용하는 것이 좋음.
- **"authn"과 "authz"는 기술적인 사람들 사이에서 충분히 사용 가능함**. 일반 대중에게는 "login"과 "permissions"를 사용하는 것이 좋음.
- **실생활에서도 유사한 개념이 존재함**. 예를 들어, 작업 배지는 신원을 확인하고 접근 권한을 부여함.
- **권한 부여와 권한은 동일하지 않음**. 권한은 특정 사용자에게 할당되지 않은 권리나 특권임.
- **권한 부여는 두 가지 의미를 가질 수 있음**. 사용자가 특정 작업을 수행할 수 있는 권한을 부여하는 과정과 이를 확인하는 과정임.
- **"access control"은 런타임 접근 제어를 의미할 수 있음**. 애플리케이션이 사용자 인증 후 수행하는 작업임.
- **"authN"과 "authZ"는 충분히 적절하고 잘 이해됨**. 권한 부여는 항상 권한과 사용자의 연결과 관련됨.
