# SSO 기반 아바타 및 사용자 연결

**URL:** https://meta.discourse.org/t/sso-based-avatars-and-connecting-with-users/296393
**Category:** SSO
**Tags:** openid-connect
**Created:** [2월 22, 2024, 10:11오후 UTC](https://meta.discourse.org/t/sso-based-avatars-and-connecting-with-users/296393 "2024-02-22T22:11:11Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![jrack](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jrack/32/326934_2.png) [@jrack](https://meta.discourse.org/u/jrack)
#### Post date: [2월 22, 2024, 10:11오후 UTC](https://meta.discourse.org/t/sso-based-avatars-and-connecting-with-users/296393/1 "2024-02-22T22:11:11Z")

</div>

OIDC JWT의 picture claim에 추가 인증 없이 이미지 저장소를 가리키는 URL을 사용하려고 시도해 왔습니다. 우리는 Entra를 사용하므로, 일반적으로 userinfo는 Graph 엔드포인트를 가리키며, Bearer 토큰을 추가하지 않으면 요청이 실패합니다.

[omniauth for oidc](https://github.com/discourse/discourse-openid-connect/blob/main/lib/omniauth_open_id_connect.rb#L205)를 살펴보면 picture가 사용자에 추가되는 것 같아 이 부분을 이용해 보고 있습니다.

우선, discovery doc을 위장하여 userinfo 엔드포인트를 제거해야 했습니다. 이렇게 하면 userinfo에만 있는 정보뿐 아니라 JWT claims에 접근할 수 있게 됩니다. associated\_user\_accounts 테이블의 내용과 상세한 OIDC 로그 이벤트를 통해 picture claim이 검증되고 저장되는 것을 확인할 수 있어 잘 작동하는 것 같습니다.

uploads 테이블에서 import\_url\_for\_user가 작동하는 것 같은 흔적이 보이지만, "user\_avatar///.png"는 막다른 골목에 도달합니다.

[Discourse Connect](https://meta.discourse.org/t/13045?silent=true) 아바타 설정을 조정해 보았지만, 이 모델은 외부 시스템으로 간주되지 않는 것 같아 해당 설정도 시도해 보았습니다. 또한 SSRF 문제를 의심하여 아바타 서버 도메인 이름을 “internal host” 목록에 추가해 보았지만, 이것이 원인은 아닌 것 같습니다. 사용자 설정에서 "Custom Picture"가 활성화되어 있는 것을 볼 수 있지만, 링크가 깨져 있어 시도 중이지만 어떤 이유로 인해 처리가 완료되지 않는 것인지 알 수 없습니다.

JWT claims를 사용하여 아바타 URL을 제공하는 데 성공한 경험이 있으신 분이 계신가요? 제가 놓치고 있는 부분이 무엇인지 알려주시면 감사하겠습니다. user\_avatar와 관련된 디버깅 방법을 통해 원인을 파악할 수 있는 방법이 있을까요?
