devHudi / hudi.blog

개인 블로그
https://hudi.blog
MIT License
18 stars 3 forks source link

open-id/ #86

Closed utterances-bot closed 1 month ago

utterances-bot commented 1 year ago

OpenID(OIDC) 개념과 동작원리

https://hudi.blog/open-id/

f2koi-shiftup commented 1 year ago

좋은 글 공유해주셔서 감사합니다!

KOKEONHO commented 8 months ago

좋은 글 잘 봤습니다 !!

KOKEONHO commented 8 months ago

잘 이해가 가지 않는 부분이 있어서 추가 댓글 남겼습니다 !

위와 같이 iss exp 같은 기본적인 클레임과 함께 sub 라는 유저 식별 정보(ID)를 보내준다. 위 예시에서는 유저 식별 정보만 ID 토큰에 포함되도록 반환받았다. 그런데, OAuth 2.0의 스코프를 openid 뿐 아니라 IdP에서 제공하는 추가적인 스코프(예를 들어 email 등)를 추가로 포함하여 요청하면 ID 토큰에 유저에 대한 추가적인 정보를 얻어올 수 있을 것 이다.

OIDC를 지원하는 IdP로 보내는 URL(ex. https://authorization-server.com/auth?response_type=code&client_id=29352735982374239857&redirect_uri=https://example-app.com/callback&scope=openid+email+name)의 scope에 openid를 포함시키면 액세스 토큰과 함께 ID Token을 받을 수 있고, 이 안에는 추가한 스코프들(ex. email, name) 정보가 한꺼번에 같이 담겨서 온다는 말씀이신거죠 ?

KOKEONHO commented 8 months ago

추가적으로 또 궁금한 점이 생겼는데, 만약 사용자의 email, profile 같은 정보만 궁금하다면 Access Token은 제외하고 ID Token만 받아도 되는걸까요 ?

devHudi commented 7 months ago

안녕하세요, @KOKEONHO 님,

scope에 openid를 포함시키면 액세스 토큰과 함께 ID Token을 받을 수 있고, 이 안에는 추가한 스코프들(ex. email, name) 정보가 한꺼번에 같이 담겨서 온다는 말씀이신거죠 ?

넵 구글의 경우 그렇게 구현되어 있는 것으로 알고 있는데, OAuth나 OpenID가 상세 구현까지는 명세하지 않아서 사실 구현하기에 따라 다른것으로 알고 있어요.

만약 사용자의 email, profile 같은 정보만 궁금하다면 Access Token은 제외하고 ID Token만 받아도 되는걸까요 ?

넵 Access Token 은 리소스에 접근하기 위해 사용되는 토큰이기 때문에 유저 정보만 궁금하다면 그렇게 하셔도 괜찮습니다.

KOKEONHO commented 7 months ago

@devHudi 답변 감사합니다 ! Spring Security로 구글 OIDC 인증을 통해 id token만 받아올 수 있더라구요. 좋은 글 덕분에 유의미한 학습 기회였습니다 !

literate-t commented 7 months ago

너무너무너무 좋은 글 감사합니다