OIDC JWT의 picture claim에 추가 인증 없이 이미지 저장소를 가리키는 URL을 사용하려고 시도해 왔습니다. 우리는 Entra를 사용하므로, 일반적으로 userinfo는 Graph 엔드포인트를 가리키며, Bearer 토큰을 추가하지 않으면 요청이 실패합니다.
omniauth for oidc를 살펴보면 picture가 사용자에 추가되는 것 같아 이 부분을 이용해 보고 있습니다.
우선, discovery doc을 위장하여 userinfo 엔드포인트를 제거해야 했습니다. 이렇게 하면 userinfo에만 있는 정보뿐 아니라 JWT claims에 접근할 수 있게 됩니다. associated_user_accounts 테이블의 내용과 상세한 OIDC 로그 이벤트를 통해 picture claim이 검증되고 저장되는 것을 확인할 수 있어 잘 작동하는 것 같습니다.
uploads 테이블에서 import_url_for_user가 작동하는 것 같은 흔적이 보이지만, "user_avatar///.png"는 막다른 골목에 도달합니다.
Discourse Connect 아바타 설정을 조정해 보았지만, 이 모델은 외부 시스템으로 간주되지 않는 것 같아 해당 설정도 시도해 보았습니다. 또한 SSRF 문제를 의심하여 아바타 서버 도메인 이름을 “internal host” 목록에 추가해 보았지만, 이것이 원인은 아닌 것 같습니다. 사용자 설정에서 "Custom Picture"가 활성화되어 있는 것을 볼 수 있지만, 링크가 깨져 있어 시도 중이지만 어떤 이유로 인해 처리가 완료되지 않는 것인지 알 수 없습니다.
JWT claims를 사용하여 아바타 URL을 제공하는 데 성공한 경험이 있으신 분이 계신가요? 제가 놓치고 있는 부분이 무엇인지 알려주시면 감사하겠습니다. user_avatar와 관련된 디버깅 방법을 통해 원인을 파악할 수 있는 방법이 있을까요?