Discourse 연결 플로우

Discourse API를 사용하여 커뮤니티를 구축하고자 합니다. 현재 플로우에서 문제가 발생하고 있습니다.

저희 프론트엔드는 React 앱이고, 백엔드는 MS 아키텍처 기반의 NodeJS로 구성되어 있습니다. 모든 인증 플로우를 저희 측에서 관리하고 있습니다.

제가 이해한 Discourse Connect의 동작 방식은 다음과 같습니다.

  1. FE가 nonce와 사용자 정보를 포함한 페이로드를 생성한 후 example.com/session/SSO ?sso=xx&sig=xx에 호출을 보냅니다.

  2. Discourse가 discourse_connect_url로 콜백을 보내며, 여기서 페이로드를 검증한 후 리다이렉트 URL을 반환하고 사용자가 Discourse로 리다이렉트됩니다.

하지만 사용자 정보를 포함하여 페이로드를 생성할 때, 이 정보를 Front End에서 Discourse로, 그리고 다시 Backend로 전달(propagate)하는 데 실패하고 있습니다. 누군가 도움을 주실 수 있거나, 제 이해가 올바른지 확인해 주실 수 있을까요? 포럼에서도 예상되는 해결책을 검색해 보았지만 해결책을 찾지 못했습니다.

참고로, BE에서 사용자 정보를 하드코딩하면 Discourse에 로그인하는 것은 가능합니다.

저희 웹사이트를 Discourse의 인증 제공자(Authentication Provider)로 설정하고, 사용자 정보를 Front End에서 BE로 전달하는 것이 목표입니다. 플로우에 대한 도움이나 JavaScript에 대한 예시를 주실 수 있을까요?

안녕하세요, Ankit.

실제로는 설명하신 흐름과 반대의 순서입니다. 사이트에 Discourse Connect를 설정하면 다음과 같습니다:

  1. 로그인 버튼을 클릭하면 sso와 sig라는 두 개의 GET 파라미터가 포함된 discourse_connect_url로 이동합니다.
  2. 사용자는 discourse_connect_url에서 자격 증명을 입력하며, 이 과정에서 사이트가 인증을 수행합니다. 인증이 성공하면 sso를 디코딩하여 Discourse Connect 토픽에 설명된 대로 추가 단계를 진행해야 합니다.

저도 비슷한 플로우 문제를 겪고 있습니다. 사용자에게 Discourse에 직접 접속하게 한 뒤 로그인 버튼을 클릭하게 하고 싶지 않습니다. 제 플랫폼에 접속한 후 ‘Discourse 접근’ 버튼을 클릭하면 사용자가 인지하지 못하는 상태에서 투명하게 Discourse에 접속할 수 있도록 하고 싶습니다.

사용자가 Discourse에 미리 접속하거나 로그인 버튼을 클릭하지 않아도, 제 플랫폼이 API를 통해 사용자를 위한 'nonce’를 안전하게 생성할 수 있을까요?

참고: 사용자가 알지 못하도록 제가 직접 Discourse에 접속해 대신 버튼을 클릭하는 방식으로 이 작업을 수행할 수는 있지만, 이는 애플리케이션에 안전하지 않습니다.

가장 간단한 방법은 포럼의 /login으로 연결되는 링크를 “Discourse에 접근” 버튼으로 설정하는 것입니다.