포럼 URL을 방문하지 않고 SSO로 Discourse 계정을 생성할 수 있나요?

저는 SSO를 사용하여 사용자 이름/비밀번호 자격 증명을 Discourse 인스턴스로 전달하는 포럼을 관리하고 있습니다.

현재는 메인 웹사이트에 로그인한 후 포럼으로 이동해야 자격 증명 전달이 이루어지고 포럼 계정이 생성됩니다.

개발팀이 오래된 API 호출 방식을 업데이트하여 Discourse의 현재 사양에 맞게 변경하는 작업을 진행 중입니다. 개발자가 사용자가 포럼으로 명시적으로 클릭하지 않아도 SSO가 Discourse 계정을 생성할 수 있다고 알려주었습니다.

혹시 이렇게 API를 설정해 보신 분 계신가요? 기본적으로 자동 동기화를 진행하는 것에 대해 우려가 있습니다. 장단점이 무엇일까요?

네, 저희 WordPress 플러그인에는 이와 유사한 기능을 수행하는 옵션이 있습니다. 작동 방식은 다음과 같습니다. 사용자가 WordPress 계정을 생성하거나 WordPress 사이트에 로그인할 때 Discourse의 /admin/users/sync_sso 라우트로 호출이 이루어집니다. 사용자가 아직 Discourse에 존재하지 않는 경우, 이 호출을 통해 Discourse 사용자를 생성합니다. 사용자가 이미 Discourse에 존재하는 경우, 이 호출을 사용하여 SSO 제공자 사이트에서 변경된 사용자 세부 정보를 업데이트할 수 있습니다. 예를 들어, 사용자의 이름, 사용자 이름 또는 이메일 주소를 업데이트하는 데 사용할 수 있습니다. 또한 사용자를 Discourse 그룹에 추가하거나 제거하는 데도 사용할 수 있습니다.

sync_sso 라우트에 대한 일반적인 개요는 https://meta.discourse.org/t/sync-sso-user-data-with-the-sync-sso-route/84398을 참고하시기 바랍니다. 개발자분들이 PHP로 작성된 작동 예시를 보고 싶으시다면, 저희 WordPress 플러그인의 이 파일을 확인해 보시기 바랍니다: wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub. 해당 파일에서 주목해야 할 주요 함수는 sync_sso 함수입니다.

제가 인지하고 있는 유일한 단점은 SSO 코드에 일부 복잡성이 추가된다는 점입니다. WordPress 플러그인에서 구현된 방식으로는, 사용자가 SSO 제공자 사이트에 로그인할 때마다 Discourse로 API 호출이 추가됩니다. 이는 WordPress 로그인 이벤트에 연결되어 있기 때문입니다. 이 API 호출이 어떤 사이트에서든 속도 제한(rate limit) 문제를 일으킨다는 사실은 인지하지 못하고 있지만, 만약 문제가 발생한다면 새 계정 생성 시에만 호출을 수행하도록 설정할 수 있습니다.

이 방식의 장점은 사용자가 Discourse에 SSO를 통해 로그인하지 않아도 사용자 세부 정보를 업데이트할 수 있다는 것입니다. 예를 들어, 사용자가 웹사이트에서 특정 작업을 수행할 때 사용자를 Discourse 그룹에 추가할 수 있습니다.

웹사이트를 SSO를 통해 Discourse와 통합하는 또 다른 방법은 웹사이트에 SSO 로그인 링크를 사용하는 것입니다. 이를 통해 웹사이트에서 Discourse 포럼으로 사용자를 로그인시키고 특정 페이지로 이동시킬 수 있습니다. 설정 방법에 대한 자세한 내용은 이 토픽을 참고하세요: SSO 로그인 링크 만들기.