티스토리 뷰
OAuth 2.0 and OpenID Connect (in plain English) 라는 영상을 보고 정리한 SNS 타래를 블로그로 옮긴 것입니다. 정리라고 해도 기존에 알고 있던 지식은 담지 않았으므로 처음으로 이 주제를 접하신다면 영상 내용을 전부 확인하시는 걸 권해드립니다.
https://www.youtube.com/watch?v=996OiexHze0
글타래
https://twingyeo.kr/@sftblw/107320908001087344
글타래 내용 백업
이 영상에서 배운 것 타래
1. Code flow vs Implicit flow
1-A. 안전 vs 덜 안전
그림에서 점선은 "백 채널"(보통 백엔드) 에서 동작해야 하는 내용으로, 안전하다고 생각함.
그림에서 실선은 브라우저 등에서 동작하는 코드로 어느정도 안전하다고 해도 유저나 나쁜 사람이 마음 먹으면 훔쳐갈 가능성이 있다고 생각함.
1-B. authorization code vs access token
그림의 흐름을 보면 먼저 authorization code 를 받고 그걸로 다시 실제로 뭘 할 수 있는 access code 을 발급받음.
토큰을 바로 받아오면 될 걸 굳이 두 단계로 나뉘어져있는 이유는, 안전한 영역(백엔드 서버)과 덜 안전한 영역(유저의 브라우저)을 나누기 위함
1-C. code flow vs Implicit flow
이 그림은 위에서 말한 두 단계로 나뉜 code flow 인데, 앱에 백엔드가 없다면 정말로 토큰을 바로 받아오면 됨. 그게 implicit flow
(추가: implicit flow 는 이제 쓰지 말랍니다. code flow + PKCE (뭔진 모르겠지만) 을 쓰라네요. 저 당시에는 별다른 뾰족한 수단이 없었다고...)
그 외 플로우
그 외 두 가지 플로우는 크게 신경쓸 필요가 없는듯
암호 로그인은 백엔드 시스템간에 사용하거나 레거시 지원용이라고 보고 나머지 하나는 모였더라
2. OAuth 2.0 vs OpenID Connect
OIDC 가 기존의 오픈아이디랑 생판 다른거라는 건 익히 알고있었는데 뭐였는지는 도대체 감이 안 왔었음.
이건 OAuth 가 원래 의도했던 일과 실제로 쓰인 일의 차이에서 유래됨
인가/허가 (authorization)
OAuth 의 원래 목적. 마스토돈이라면 글을 올리거나 지우거나 뭐 별별짓을 다 할 수 있게 권한을 주는 것
인증 (authentication)
소셜 로그인에 쓰이는 그거. 너가 누구세요? 를 확인하는 방법. 이 부분이 문제임. 원래 의도하지 않은 사용방법.
인증이 문제
인증이 문제임. 너 누구세요? 하는 방법.
OAuth 키 자체에는 너가 누구인지를 설명할 수 있는 내용이 전혀 없어서 여러 업체별로 중구난방으로 사용자 이름이나 이메일 같은 걸 가져오는 걸 만들어댐.
야 그럼 OAuth 2.0 으로 사용자 정보를 가져오는 방법을 표준화하면 어떠냐? 하는 게 OIDC. 그러니까 단순히 OAuth 2.0 의 Scope랑 endpoint 를 사전에 정해둔 것에 불과해서, OAuth 2.0 의 Extension 이라고 부르는 것.
OIDC에서 정의하는 OAuth 2.0 의 규약
(* 영상만 보고 파악한 것으로 실제와 다를 수 있음에 유의바랍니다)
- - Scope: openid
- - 토큰 발급 시 (openid scope가 있다면) 추가로 발급받는 것: ID 토큰 (내용은 JWT) => JWT 이므로 ID 토큰 안에 기본적인 사용자 정보는 다 들어있음.
- - 정보를 더 가져올 수 있는 추가 엔드포인트
- Total
- Today
- Yesterday
- scss
- Sass
- mvu
- rust-lang
- c++
- exercism
- pdf.js
- 개발기록
- kotlin당했다
- C#
- K8s
- 시스어드민
- javascript
- 업비트
- gitea
- pleroma
- Oracle Cloud Infrastructure
- 오라클 클라우드
- C++ FAQ
- 오라클 클라우드 인프라
- vuex
- 왜 생각이 안 났지
- 쿠버네티스
- Godot Engine
- ActivityPub
- upbit
- 마스토돈
- OStatus
- ArchLinuxARM
- 토이프로젝트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |