예제로 자주 등장하는 `줍줍`은 현재 진행되고 있는 프로젝트 명으로 슬랙 메시지를 백업해주는 서비스입니다.
이 글을 읽기 전에 인증과 인가의 차이를 알고 있다면 훨씬 이해하기 편합니다.
- 인증; authentication: 사용자의 신원을 확인
- 인가; authorization: (신원이 확인된 사용자에게) 자원에 접근할 수 있는 권한 부여
🧾 OAuth 🧾
- 인가 / authorization
- 서버 자원 소유자가 클라이언트에게 서버 자원에 대한 액세스 토큰 제공
ex: Slack이 줍줍에게 access token을 발급 - 해당 액세스 토큰을 통해 리소스 서버에 액세스 가능
ex: access token을 통해 줍줍이 Slack에게 사용자 정보 조회 요청
✅ OAuth 1.0 vs OAuth 2.0
OAuth 2.0은 기존의 OAuth 1.0와 호환되지 않는 새로운 프로토콜이다. 기존의 OAuth 1.0은 데스크톱이나 휴대폰 애플리케이션에서 사용자가 원하는 서비스로 브라우저를 연 뒤 서비스를 인증하고, 서비스에서 애플리케이션으로 토큰을 복사하여 사용하는 방식이다. 브라우저를 왔다갔다하는 과정이 필수적이었어서 사용자 경험 측면에서 나쁘다는 비판을 받았다. OAuth 2.0이 나타나며 이러한 인증 절차가 간소화 되었으며 몇가지 용어가 변경되었다.

| OAuth 1.0 | OAuth 2.0 | |
| 암호화 과정 | 필요 | 필요X. 보안을 HTTPS에 위임 |
| 액세스 토큰 | 1년 이상 긴 access token | (짧은 기간의) access token + refresh token |
📑 OAuth 2.0 예제 및 적용 과정
👉 https://yeonyeon.tistory.com/254
[OAuth] 슬랙 로그인 구현하기
목차 1. OpenID vs OAuth vs OIDC 2. OAuth 인증 과정 3. 로그인 동의 화면 4. 로그인 API 구현하기 `줍줍` 프로젝트는 슬랙을 이용해 로그인하는 기능을 제공할 예정이다. 해당 기능을 개발하는 과정을 이야
yeonyeon.tistory.com
💳 OpenID 💳
- 인증 / authentication
- 사용자를 인증해 사용자에게 액세스 권한을 부여할 수 있게 해주는 프로토콜
- OpenID 공급자의 로그인 자격 증명하여 다른 애플리케이션에 로그인 가능
ex: Slack의 로그인 자격을 증명하여 줍줍에 로그인 가능 - 제 3자가 이미 갖고있는 계정을 사용해 대신 사용자를 인증할 수 있게 함
❗ OpenId 1.0 vs OpenId 2.0 vs OpenID Connect
- 1.0 -> 2.0 -> OpenID Connect 순으로 발전
- OpenId 1.0과 2.0은 더이상 사용하지 않는 사양으로 명시됨
(참고: https://openid.net/developers/specs/)
✨ OpenID Connect (= OIDC)
- OAuth 2.0 상위에 구축된 인증 계층이기 때문에 OAuth 2.0과 직접적인 관련
- JWT 활용

❓ Access Token vs Id Token
OAuth에서 발급해주는 access token과 OpenID Connect에서 발급해주는 id token은 무슨 차이일까? access token은 access token을 발급받은 뒤 해당 token을 이용해 유저 프로필 정보에 대한 접근 요청을 보내야한다. 하지만 id token은 별도로 요청을 보낼 필요 없이 해당 token을 decode하여 유저 프로필에 대한 정보를 바로 획득할 수 있다.
| access token (OAuth2) | id token (OIDC) | |
| 서버의 리소스 접근 권한 | O | X |
| 유저 프로필 정보 획득 | X | O |
참고
'Develop > etc' 카테고리의 다른 글
| Windows에서 8080 port 사용이 불가능한 현상 (1) | 2022.09.18 |
|---|---|
| [IntelliJ] gradle project 생성 시 불필요한 파일들이 생기는 현상 (0) | 2022.09.02 |
| [OAuth] 슬랙 로그인 구현하기 (5) | 2022.07.31 |
| [Git] 서브 모듈로 중요한 설정 정보 숨기기 (2) | 2022.07.21 |
| [Git] 커밋에 공동 작업자 추가하기 (2) | 2022.07.20 |