API 역공학 가이드를 따라가던 중 로그인 링크를 보내는 API 호출에서 문제가 발생했습니다.
왜 이 작업을 하고 있는지에 대한 배경
저는 로컬 해커스페이스의 사용자가 해커스페이스 멤버십 시스템으로 우리의 Discourse에 로그인할 수 있도록 SSO 서비스를 만들었습니다.
하지만 일부 사용자는 멤버십 시스템과 Discourse에 서로 다른 이메일 주소를 사용했을 수 있습니다. SSO가 활성화되면 로컬 로그인이 비활성화되므로, 사용자들이 "로그인 링크를 이메일로 보내기"를 클릭하여 로그인할 수 있도록 하고, 이후 원하면 이메일 주소를 업데이트하거나(또는 그냥 로그인 링크를 계속 사용하거나) 할 수 있기를 원합니다.
목표
API를 통해 user @ domain .co.uk 사용자에게 로그인 링크를 보내고 싶습니다.
말씀하신 대로 가장 쉬운 방법은 이메일 주소로 계정을 매칭하는 것입니다. 이것이 불가능할 경우, 우리는 다음과 같은 몇 가지 접근 방식을 사용합니다:
다른 고유 식별자를 사용하여 사용자를 매칭합니다. 콘솔을 통해 사용자의 DiscourseConnect 연관 관계를 사전에 생성할 수 있습니다. 이는 Discourse와 Identity Provider(신원 제공자) 간에 일관된 다른 식별자가 있는 경우에만 작동합니다.
(가장 일반적인 방법) 사용자가 새 계정에 가입하도록 허용한 다음, 관리자에게 메시지를 보내 새 계정을 기존 계정으로 "병합"해 달라고 요청하도록 합니다(사용자 관리자 페이지 하단의 버튼을 사용). 그러면 이메일이 자동으로 매칭되고 DiscourseConnect 연관 관계가 생성됩니다.
이 과정을 셀프 서비스로 처리할 수 있다면 훌륭한 기능이 될 것 같습니다. 예를 들어, 사용자가 이메일 링크를 통해 로그인한 후 이메일 주소를 업데이트하여 두 계정을 동기화할 수 있는 API를 제공하는 방식이라든가, 사용자가 Discourse 이메일과 비밀번호를 제공하면서 업데이트된 이메일 주소를 함께 입력하여 본인 인증을 하는 방식도 가능합니다.