아, 죄송합니다 — 전에 답변을 했다고 확신했는데… 그렇지 않았나 봅니다. 그냥 생각만 하고 있었던 것 같네요! 어쨌든:
이메일은 처음에 WordPress와 Discourse 모두 SSO에서 동기화됩니다. 하지만 많은 요청이 있어, Discourse에서 해당 이메일을 변경할 수 있도록 허용했습니다. (로그인에 직접 연결된 이메일 주소가 아닌 다른 곳으로 Discourse 알림을 보내고 싶어하는 경우가 꽤 잦은 것으로 드러났습니다.) WordPress에서도 이메일 주소를 변경할 수는 있지만, 그렇게 하는 사람이 있는지, 심지어 해당 인스턴스에서 나가는 이메일이 _동작하는지_조차 알지 못합니다.
"user id"라고 한 것은 "username"을 의미했습니다. 사용자 이름은 항상[1] Discourse와 WordPress 모두 SSO에서 가져오며, 어떤 경우에도 사용자가 변경할 수 없습니다. 제게는 알 수 없는 이유지만, 당시에는 합리적이었을 가능성이 있습니다. SSO 쪽에서는 이것이 nickname으로 처리되며, oauth2 json username path에 매핑됩니다.
실제로 제 계정처럼 SSO를 도입하기 전에 설정된 일부 계정은 잘못된 상태입니다. 저는 mattdm 대신 "Matthew Miller"로 표시되어 있습니다. 하지만 이 부분은 정리할 수 있습니다. ↩︎
어느 시점부터 이메일 주소를 (oauth2) SSO에서 강제로 동기화하도록 변경했습니다. 따라서 그 방식으로 매칭할 수 있을 것입니다. (그리고, 어떤 이유로든 불일치가 발생하더라도 이메일이 _다른 사람_에게 속하는 경우는 없어야 하므로, 최악의 경우에도 단순히 실패하는 것 외에는 문제가 되지 않겠죠?)
또한, 이 새로운 기능은 꽤 신중하게 고려해야 할 사항입니다. 몇 년 전에는 가능하다고 말씀드렸지만, 현재는 워드프레스에서 이메일 주소가 적절하게 검증된다는 전제를 해야 하므로, 이는 반드시 안전한 가정이 아니기에 플러그인의 핵심 기능으로 구현하는 데 다소 신중해지고 있습니다.
(워드프레스 이메일 검증)은 사이트 관리자의 책임이지만, 오픈 소스 개발의 원칙 중 하나는 환경에 대한 통제권이 없는 상황에서 일부 경우(아무리 작은 부분이라도) 나쁜 결과를 초래할 수 있는 것을 만들지 않는 것입니다. 이 문제는 여전히 존재하지만, DiscourseConnect로만 제한되면 완화됩니다.
이 문제에 대한 기존 솔루션이 어느 정도 있습니다. Discourse를 WordPress의 DiscourseConnect 제공자로 구성할 수 있습니다(일반적인 구성과 반대입니다). 설정이 쉽습니다. 활성화되면, 사용자의 이메일 주소를 기반으로 WordPress/Discourse 계정을 동기화할 수 있는 선택 사항이 있습니다.
지금 테스트 중인데, 프로필 페이지의 링크를 클릭해도 Discourse 사용자 이름 필드가 입력되지 않습니다. 입력되어야 합니다. 로그인 페이지에 추가할 수 있는 “Discourse로 로그인” 링크를 클릭하면 Discourse 사용자 이름 필드가 자동으로 업데이트됩니다.
계정 동기화의 목적은 보안 방식으로 Discourse 사용자 이름 필드를 업데이트하는 것이므로, 이 부분에 대해 살펴볼 가치가 있을 것입니다. 또한, WordPress에서 “미확인” 이메일 주소를 가진 계정이 Discourse와 계정을 동기화하는 것이 허용되는 문제도 있는 것으로 보입니다. 기본적으로는 이것이 허용되지 않아야 합니다.
귀하의 경우, 사용자가 Discourse를 통해 WordPress에 로그인하는 것을 허용하지 않으실 수 있습니다. 프로필 페이지의 링크만 사용하여 사용자가 계정을 동기화하도록 허용하여 Discourse 사용자 이름 필드가 자동으로 입력되도록 하면 됩니다. 이를 위해 Discourse를 통한 WordPress 로그인을 활성화할 필요는 없습니다.
이 접근 방식의 가능한 단점은 사용자가 직접 시작해야 한다는 것입니다. 관리자가 사용자의 Discourse 사용자 이름을 가져오기 위해 클릭할 수 있는 버튼을 제공하지는 않습니다.
이름(DiscourseConnect)에 현혹되지 마세요. 제가 설명한 기능이 정상적으로 작동한다면, 이는 WordPress 사용자가 이메일 주소가 일치하는 Discourse 계정이 있는지 확인하고, WordPress에서 Discourse 사용자 이름이 자동으로 입력되도록 하는 방법일 뿐입니다. 이는 사이트의 인증 시스템에 영향을 주지 않습니다.
핵심 플러그인에는 설정 옵션을 통해서도 워드프레스 사용자 이름과 디스커스 사용자 이름의 매칭 식별 메커니즘이 절대 도입되지 않을 것입니다. 이 맥락에서 유일한 가능성은 이메일 매칭입니다. 저는 사용자 웹훅에 이메일 매칭을 폴백 메커니즘으로 추가하기로 결정했습니다. 이 기능은 몇 주 안에 나올 다음 버전에서 제공됩니다.
이 문제를 마무리하기 위해, 플러그인의 최신 버전 2.5.4에는 Webhooks 관련 다양한 업데이트가 포함되어 있습니다. 여기에는 “Match Users by Email” 설정에 대한 DiscourseConnect 요구 사항을 제거하는 것도 포함됩니다. 자세한 내용은 아래를 참고하세요.