게임 개발 - 사용자 등록 및 DB 관리 (자문 필요)

여러분, 안녕하세요. 잘 지내고 계신가요?

방향성에 대한 일반적인 도움을 요청드립니다. 우리는 Discourse의 가입/사용자 관리/DB를 사용하여 동일한 정보를 외부 게임 데이터베이스에도 등록하려고 합니다(이렇게 하면 플레이어가 동일한 로그인 정보를 사용하여 게임에 로그인할 수 있습니다).

현재 git 저장소를 살펴보고 시스템이 어떻게 작동하는지 파악하고 있습니다.

앞서 언급했듯이 전체적인 계획은 사용자가 포럼에 가입할 때, Discourse가 해당 사용자 정보를 게임 데이터베이스(다른 VPS에 호스팅됨)에도 등록하는 것입니다. 사용자가 비밀번호나 이메일을 업데이트하면, 이 변경 사항이 우리의 SQL DB에도 반영되어야 합니다.

몇 시간 전에 자체 호스팅 Discourse 포럼을 설정하고 실행 중이라, 아직 Discourse를 학습 중입니다.

따라서 제 질문은, 이 작업을 시작하기 위해 Discourse에서 어디부터 살펴봐야 하는지 알고 싶습니다.

마법의 단어는 "DiscourseConnect"와 "identity provider"입니다 :wink:

좋아요, 보내줘서 감사합니다!

이것은 SSO / DiscourseConnect가 이메일을 제3자를 통해 검증해야 하는 것처럼 보입니다.

이는 저희 환경에서 문제가 됩니다. 저희는 Discourse가 이메일 검증과 계정 관리를 평소처럼 처리하되, 단순히 데이터베이스 정보를 게임 DB로 전달해주기를 원합니다.

결국 SSO와 정반대되는 구조입니다.

간단히 말하면, Discourse가 모든 것을 처리해야 하며, 저는 그 DB에서 일부 사용자 정보만 가져오면 됩니다.

Richard가 제안한 대로 Discourse를 ID 제공자로 사용하면, Discourse가 이메일 검증을 대신 처리해 줍니다.

사용자가 Discourse에서 SSO 플로우를 거친 후 웹사이트로 돌아오면, Discourse가 sso 파라미터에 임베디드 쿼리 문자열로 추가하는 응답을 사용할 수 있습니다. 여기에는 이메일, 사용자 이름, 이름, 그룹 등이 포함되지만(비밀번호는 포함되지 않으며, 그렇게 하는 것은 적절하지 않습니다), 제공된 sig를 사용하여 이를 추출하고 적절하게 검증할 수 있습니다.

음, 알겠습니다.

앞서 언급했듯이, Discourse가 정보를 전송하는 대상이 웹사이트는 아닙니다.

이것은 게임 서버입니다. 즉, MySQL이 실행 중인 VPS 하나입니다.

기존 워크플로우는 다음과 같았습니다.
유니티(Unity)가 사용자가 "계정을 등록"할 때 SQL 테이블을 채웠습니다.

제가 하려는 것은 Discourse를 등록 및 계정 관리 제공자로 사용하는 것입니다.

즉, 사용자가 Discourse에서 등록하고 이 정보를 사용하여 게임 서버에 로그인하는 것입니다(유니티 클라이언트를 통해).

따라서 Discourse 사용자 데이터를 MySQL 데이터베이스로 신뢰할 수 있게 전송하는 방법이 필요합니다.
(두 시스템은 동일한 머신에 있습니다.)

이를 위해 Postgres → MySQL용 외부 데이터 래퍼(FDW)를 설정하고, 적절하게 데이터를 채우도록 트리거를 사용했습니다.

그런 다음 사용자가 게임 내에서 (Discourse) 이메일과 비밀번호를 입력하면 로그인할 수 있게 됩니다 - 이론적으로는요.

최근에 읽은 또 다른 문제는 Discourse가 사용하는 비밀번호 해싱 방식입니다(여러 가지 이유로 좋은 점이지만), 해시가 고유하므로 그 방식으로 비교할 수 없습니다.

다시 말하지만, SSO를 위한 웹사이트가 없습니다. Discourse와 클라이언트가 연결되는 비디오 게임 서버를 실행하는 다른 VPS가 있을 뿐입니다.