Drupal Discourse SSO 관련 문제

안녕하세요,

저는 Discourse를 처음 사용하는 사용자입니다. Drupal 웹사이트와 Discourse SSO 모듈을 사용하여 포럼을 설정하려고 하고 있습니다. 모듈의 설명서와 이 주제의 지침을 따랐지만, 불행히도 URL "mydrupalwebsite.com/discourse/sso"는 404 오류를 반환합니다.

해당 주제가 작성된 이후 모듈에 API 키를 포함한 새로운 설정이 추가되었는데, 이 키를 어떻게 사용해야 하는지 모르겠습니다.

같은 문제를 겪고 계신 분이 계신가요?

감사합니다.

사용 중인 Drupal 모듈에 대한 링크를 공유해 주시겠어요? 만약 이 게시물에 링크된 모듈이라면, 마지막으로 업데이트된 시점이 2015년 3월이므로 문제가 발생할 가능성이 높습니다.

이 Drupal SSO 모듈은 2019년 12월에 업데이트되었습니다: Client Challenge. 사용해 보는 것이 좋을 것 같습니다.

저는 최신 버전의 두 번째 방법을 사용하고 있습니다.

SSO 시크릿과 SSO URL을 설정했는데, 로그인하려고 하면 정상적으로 리다이렉트가 일어나는 것처럼 보이지만 /discourse/sso 페이지가 404 오류를 반환합니다.

해당 모듈에 문서가 있나요? SSO를 활성화하는 일반적인 과정은 SSO 엔드포인트를 Discourse의 sso url 사이트 설정에 추가하고, SSO 시크릿 키를 sso secret 사이트 설정에 추가한 후, enable sso 사이트 설정을 활성화하는 것입니다. 처음 설정할 때는 verbose sso logging 사이트 설정도 활성화하는 것이 좋습니다. 이 설정이 활성화되면 사이트의 에러 로그(Admin / Logs / Error Logs에서 확인 가능)에서 SSO 오류에 대한 세부 정보를 확인할 수 있습니다.

Discourse 설정을 활성화한 후에는 Discourse 사이트의 URL과 sso secret이 SSO 제공업체 사이트에 추가되었는지 확인해야 합니다.

현재 발생하는 오류를 보면, Discourse 사이트에서 enable sso 사이트 설정이 활성화되지 않은 것으로 보입니다.

SSO를 활성화한 후 Discourse 사이트에 액세스하는 데 문제가 발생하면, 관리자로서 /u/admin-login으로 이동하여 SSO 로그인을 우회할 수 있습니다. 해당 페이지의 양식에 관리자 이메일 주소를 입력하면 일회용 로그인 링크가 전송됩니다.

도와주셔서 정말 감사합니다. 불행히도 해당 모듈은 프로젝트 페이지에 있는 것 이상의 문서가 없습니다.

저는 enable sso, verbose sso logging만 확인하고, sso url 필드에 "mywebsite/discourse/sso"를, sso secret 필드에는 값을 입력했습니다.

Drupal 모듈의 가이드라인을 따라 Discourse 포럼의 URL과 SSO 시크릿을 해당 필드에 입력했습니다.

로그인을 시도하면 여전히 404 오류가 발생하며, URL은 다음과 같습니다:
https://mywebsite/discourse/sso?sso=bm9uY2U9MTJlMmI4ZWNjNzU4ZGE3YTg5ZWIwZDI2MmM5ZTUzOWEmcmV0dXJuX3Nzb191cmw9aHR0cHMlM0ElMkYlMkZmb3J1bXMuc2VnYS1tYWcuY29tJTJGc2Vzc2lvbiUyRnNzb19sb2dpbg%3D%3D&sig=96726cef3a6bb69a0863f66fb0e09ce3edb1ea77f3fd2d9e69cdaf932aede6a2

로그는 다음과 같습니다: verbose_sso.txt (5,9 Ko)

문제가 Discourse 설정에 있는 것이 아니라면, 다시 모듈 개발자에게 문의하겠습니다.

다시 한번 감사합니다.

로그 항목을 확인해 보았지만, 오류가 표시되지 않습니다. 이는 Discourse에서 SSO 프로세스가 시작된 시점의 로그 항목일 뿐입니다. 오류가 표시되는 별도의 로그 항목이 그 직후에 생성되어야 합니다. 해당 프로세스를 다시 한 번 시도해 볼 수 있을까요? 각 로그인 시도마다 Verbose SSO 로그 항목이 생성되어야 합니다. 첫 번째 항목은 Discourse에서 프로세스가 시작되었음을 나타내고, 두 번째 항목은 Discourse가 사용자의 웹사이트에서 받은 응답을 어떻게 처리했는지에 관한 것입니다.

Verbose SSO log 텍스트로 시작하지 않는 다른 관련 오류 메시지가 있을 수도 있습니다. SSO 요청을 한 시점 전후의 로그 항목을 확인해 보세요.

다시 시도해 보았더니, 이전 것과 동일한 로그 메시지가 세 개 반복되어 나타났습니다. 이 흐름을 따라가 보면, 제 웹사이트에서 아예 응답이 없는 것임을 의미해야 합니다.

네, 그렇게 보입니다. 브라우저의 웹 검사기를 열어 ‘Network’ 탭으로 이동하면 어떤 요청들이 보내지고 있는지 확인해 볼 수 있습니다. 해당 탭에서 ‘로그 유지(Preserve Logs)’ 옵션을 선택한 뒤, Discourse 사이트의 로그인 링크를 클릭해 보세요.

안녕하세요,

이 건에 대해 간단한 업데이트를 드리겠습니다. Discourse SSO 모듈이 패치되어 더 이상 사이트가 충돌하지 않습니다.

하지만 한 번 로그인한 후에는 제대로 로그아웃할 수 없으므로 여전히 작동하지 않습니다. 혹시 관심 있으신 분이 계시다면 별도의 이슈가 열려 있으니 확인해 주십시오.

이 문제를 다시 확인해 주셔서 감사합니다. 모듈의 새로운 문제가 해결되면 알려 주세요.

음, 제 조사를 계속 진행 중입니다.

다른 계정으로 SSO를 통해 Discourse에 로그인하지 못하는 이유가 있을까요? 쿠키 설정 때문일까요?

SSO가 활성화된 상태에서 로그아웃한 후 다시 로그인하면, 자동으로 첫 번째 계정으로 로그인됩니다.

다만 SSO를 비활성화하면 문제는 없습니다.

Discourse 로그아웃이 SSO 제공자 사이트의 로그아웃과 동기화되지 않는 것으로 보입니다. SSO 제공자 사이트에는 여전히 로그인된 상태이므로, 다음에 Discourse 로그인 링크를 클릭하면 SSO 제공자에 로그인되어 있다는 근거로 인증이 처리됩니다.

Discourse의 logout redirect 사이트 설정을 사용하면 SSO 제공자 사이트에서 사용자를 로그아웃시킬 수 있습니다. 사용자가 Discourse에서 로그아웃하면 해당 URL로 자동으로 리디렉션됩니다. SSO 제공자는 사용자를 로그아웃하기 위해 해당 URL을 처리해야 합니다. Drupal에 대해 충분히 숙지하지 않아 이를 구현하기 위해 어떤 작업이 필요한지는 알 수 없습니다.

네, 문제가 해결되었습니다. 요약하자면:

  • 이 모듈은 정상적으로 작동하지만, Drupal 사용자 사진 관련 버그가 있으며 패치가 대기 중입니다.
  • 이 게시물은 Discourse 설정에 대해 잘못 서술되어 있습니다. sso_url은 /discourse/sso가 아니라 /discourse_sso로 끝나야 합니다.
  • 여러 개의 서로 다른 계정으로 로그인할 수 있도록 하려면 로그아웃 리다이렉트를 http://mywebsite/user/logout으로 설정하고, 해당 플러그인을 사용 중이라면 Discourse 웹사이트에서 Ghostery를 비활성화해야 합니다.

도와주셔서 감사합니다, @simon!