티스토리 뷰

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
링크
«   2024/04   »
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 29 30
글 보관함