안녕하세요, 저는 Discourse API와 OAuth2 플러그인을 사용하여 자체 SSO 서비스의 사용자를 개인용 Discourse 설치 환경으로 마이그레이션하고 로그인 처리하고 있습니다. 지금까지 프로그래밍 방식으로 모든 SSO 사용자를 Discourse로 성공적으로 마이그레이션했습니다. 프로그래밍 방식으로 마이그레이션할 때 새 사용자는 자동 증가하는 Discourse 고유 ID와 함께 생성됩니다. 제 질문은 다음과 같습니다: API를 사용하여 특정 사용자에게 명시적인 ID를 지정하여 사용자를 생성할 수 있나요? 즉, 사용자에게 id:22를 지정하면 /admin/users/22.json으로 해당 사용자를 조회할 수 있다는 뜻입니다.
POST 본문에 'id’와 ‘external_id’ 매개변수를 전달해 보았지만 작동하지 않았습니다.
수정: 또한, API를 통해 특정 사용자 ID가 주어졌을 때 해당 사용자의 사용자 이름을 변경할 수 있는 방법이 있을까요?
감사합니다. 하지만 사용자가 생성될 때 external_id를 가지고 있지 않습니다. 사용자는 프로그래밍 방식으로 생성되며, 외부 SSO와의 연동은 사용자가 Discourse에 로그인할 때까지 이루어지지 않습니다. 사용자 마이그레이션 중에 external_id와 사용자를 프로그래밍 방식으로 연결할 수 있는 방법이 없다면, external_id를 사용할 수 없다고 생각합니다.
기존 사용자들을 SSO에서 Discourse로 대량으로 마이그레이션해야 합니다. 이 사용자들은 Discourse에 직접 로그인하지 않을 수 있지만, 예를 들어 메시지를 보내거나 Discourse API를 통해 알림을 가져오는 등의 작업이 가능해야 합니다. 따라서 사용자를 프로그래매틱하게 사전에 생성해야 합니다. 또한, 사용자는 SSO에서 사용자 이름을 변경할 수 있으므로, 주어진 ID를 기반으로 Discourse에서도 해당 사용자의 사용자 이름을 업데이트할 수 있어야 합니다.
SSO가 계정을 가지고 있고, 사용자 기록을 생성하는 데 사용할 수 있는 외부 ID를 알고 있을 것 같습니다. 그리고 나중에 그 ID를 사용하면 되겠죠. 하지만 만약 그것이 불가능하다면, 이메일 주소로 사용자를 찾아볼 수 있습니다. 가짜 이메일 주소를 두 번째로 생성할 수도 있습니다(만약 실제 이메일 주소를 변경하면 어떻게 될까요?). 그리고 나서 그 주소를 식별자로 사용하도록 어떻게든 숨겨두는 것도 방법입니다.