반응형
예제로 자주 등장하는 `줍줍`은 현재 진행되고 있는 프로젝트 명으로 슬랙 메시지를 백업해주는 서비스입니다.
이 글을 읽기 전에 인증과 인가의 차이를 알고 있다면 훨씬 이해하기 편합니다.
- 인증; 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
💳 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 |