SSO가 포함된 초대 링크(초대 수락 버튼)가 stable v2.8.10에서 작동하지 않음

Discourse 팀 여러분,

stable v.2.8.10에서 초대 수락(Accept Invitation) 버튼이 작동하지 않습니다. SSO를 통해 로그인하려고 하면 초대 페이지로 다시 리디렉션되며, 초대 수락 버튼을 눌러도 아무 반응이 없습니다. 콘솔에도 에러가 표시되지 않습니다. 도움을 주실 수 있나요?

최근 업데이트와 관련이 있을 것으로 생각됩니다: SECURITY: Fix invite link validation (stable) (#18818) · discourse/discourse@7e4e8c8 · GitHub

감사합니다

2개의 좋아요

사이트가 어떻게 설정되어 있는지 확인해 주시겠어요?

과거에는 SSO가 활성화된 상태에서 초대 기능이 작동하지 않았습니다. 이는 회귀 버그일 수 있지만, 더 많은 정보가 필요합니다.

1개의 좋아요

@Stephen 님, 안녕하세요.

답변 주셔서 감사합니다! 구체적으로 어떤 정보가 필요하신가요? 저희는 discourse-saml 플러그인과 Okta(SSO)를 사용하여 stable 브랜치(v2.8.10)에서 자체 호스팅으로 운영하고 있습니다. 2.8.10 업데이트 이전에는 그룹 초대 링크를 생성하면 정상적으로 작동했으며, 사용자가 SSO로 로그인한 후 초대 설정에 지정된 토픽으로 리디렉션되었습니다.

추가 정보:

이전 안정판 v2.8.9에서 domain.com/invites/invitecode의 동작은 다음과 같았습니다:

  • 로그인하지 않은 사용자는 SSO(앱의 app.yml SAML 설정에 지정된 Okta)를 통해 로그인하라는 화면을 표시받습니다. 이후 SSO로 리다이렉트되어 로그인/가입을 수행한 다음, 초대 관련 작업(토픽으로 리다이렉트, 그룹 추가 등)이 실행됩니다.

  • 이미 로그인한 사용자는 초대 화면을 자동으로 건너뛰고 초대 작업이 즉시 실행됩니다.

현재 안정판 v2.8.10에서 domain.com/invites/invitecode의 동작은 다음과 같습니다:

  • 로그인하지 않은 사용자와 로그인한 사용자 모두 두 개의 버튼이 포함된 초대 화면을 표시받습니다:
    – SSO로 로그인 버튼
    – 초대 수락(이것은 새로 추가된 것입니다)

‘SSO로 로그인’ 버튼을 클릭하면, 사용자가 로그인되어 있지 않은 경우 로그인을 요청하고, 다시 초대 페이지로 리다이렉트됩니다.
‘초대 수락’ 버튼을 클릭하면 아무 반응이 없습니다.

브라우저 네트워크 콘솔에서 domain.com/invites/show/invitecode.json에 대한 PUT 요청이 504 오류를 반환하는 것을 확인했습니다(2.8.10 버전에서만 발생).

1개의 좋아요

이 버그를 보고할 수 있도록 이동할 수 있는 특정 카테고리가 있나요?

1개의 좋아요

해당 이슈에 대한 가시성이 확보되어 있는지 확인해 주세요. tests-passed에는 문제가 없으며, 현재 stable 버전에서만 존재하는 문제임을 어떤 방식으로든 확인해 주실 수 있나요?

2개의 좋아요

안녕하세요 @sam,

답장 주셔서 감사합니다! 문제를 파악하고 계시다는 소식에 안심합니다.

불행히도 SSO가 포함된 테스트 통과 인스턴스는 가지고 있지 않습니다. 항상 안정판(stable)을 사용했기 때문입니다. SSO가 없는 테스트 통과 브랜치는 가지고 있고, 거기서는 문제가 없습니다.

수정: SSO가 포함된 테스트 통과 인스턴스를 실행해 볼 수 있는지 시도해 보겠습니다.

Hey @sam,

tests-passed 인스턴스를 시작해 봤는데, 제 환경에서는 문제가 없는 것 같아요.
초대도 정상적으로 수락할 수 있었습니다. 도움이 되길 바랍니다!

1개의 좋아요

@sam 님, 안녕하세요!

stable 버전으로 백포트하여 stable에서 수정할 수 있는 가능성이 있을까요?

Discourse에 업데이트가 있다는 것을 확인했습니다: 2.8.11: Security Release

이 업데이트로 해당 문제가 해결될 가능성이 있을까요? :slight_smile:

1개의 좋아요

네, 업데이트할 예정입니다. 알려주셔서 정말 감사합니다. 완료되면 알려드리겠습니다. 1~2주 정도 걸릴 것 같습니다.

2개의 좋아요

정말 멋지네요! @sam 님 감사합니다! :raised_hands:

수정:
이 문제를 겪고 있을 다른 분들을 위해 참고사항을 하나 드릴게요:

stable 버전 2.8.11에서는 문제가 해결되지 않았습니다. 대신 '초대 수락’을 클릭하면 이제 콘솔 로그에 오류가 출력됩니다:
PUT https://<DOMAIN>/invites/show/<INVITE_CODE>.json 404
.json URL로 이동하면 다음과 같은 내용이 표시됩니다:

// https://<DOMAIN>/invites/show/<INVITE_CODE>.json

{
  "errors": [
    "요청한 URL 또는 리소스를 찾을 수 없습니다."
  ],
  "error_type": "not_found"
}

안녕하세요 @hyphalos. 오늘 이 문제를 살펴보기 시작했습니다. 저희 SAML 설정에 익숙하지 않아서 조금만 기다려 주세요.

이 부분은 다소 이상합니다. “초대 수락” 버튼은 로그인한 사용자만 볼 수 있어야 합니다. 특정 초대에 대해 로그인 상태와 로그아웃 상태의 사용자가 각각 무엇을 확인하는지 스크린샷을 올려 주실 수 있을까요? 그리고 여기에서 초대에 대해 어떤 옵션을 선택하고 계신지도 알려 주세요:

3개의 좋아요

@martin 님, 안녕하세요!

답장 주셔서 감사합니다. 회신이 늦은 점 죄송합니다. 병가를 내고 쉬고 있었습니다.

v2.8.11로 업데이트한 후 추가 테스트를 해본 결과, 초대 설정과 관계없이 사람들이 초대를 한 번만 수락할 수 있는 것을 확인했습니다. ‘토픽에 도착’ 설정을 켜고 끄는 경우, ‘그룹에 추가’ 설정을 켜고 끄는 경우 등 다양한 조합으로 테스트해 보았지만, 어떤 경우에도 초대를 한 번만 수락할 수 있었습니다. 이것이 의도된 동작인가요?

게스트가 가입한 후 같은 초대 URL을 다시 사용한다면, 초대 페이지에 갇히게 됩니다(토픽에 도착 설정이 있어도 리디렉션되지 않음). 이때 초대 수락 버튼을 클릭하면 다음과 같은 오류가 발생합니다:

수정: 만약 이것이 의도된 동작이라면, "이미 이 초대를 수락한 적이 있습니다"와 같은 오류 메시지가 표시되거나, 초대에 설정된 ‘토픽에 도착’ 위치로 리디렉션되는 기능이 있어야 할 것 같습니다.

2개의 좋아요

네, 이는 예상되는 동작입니다. 오류 자체는 아니지만, 초대를 여러 번 수락할 수 없는 부분에 대해서는 그렇습니다. New 'accept invitation' prompt feature causing issues with invitation links - #14 by martin 에서 이 문제를 논의했으며, 저는 여기서 수정을 했지만 이제 stable 버전에도 해당 수정 사항을 백포트해야 한다는 것을 깨달았습니다. @sam 참고 부탁드립니다.

2개의 좋아요

안녕하세요 @martin, 정말 좋습니다. 조사해 주셔서 감사합니다!

2개의 좋아요

방금 이 수정 사항을 stable에 커밋했습니다:

2개의 좋아요

안녕하세요 @martin!

다시 한번 수정해 주셔서 감사합니다!

2.8.12 버전으로 업데이트했습니다(관리자 패널의 커밋 태그에 따르면 수정 사항이 포함되어 있음)를 적용한 후, 테스트 계정에서 이전에 수락했던 초대장을 다시 수락하려고 시도할 때 에러 메시지가 표시되는 것을 확인했습니다:

이 부분은 아주 좋습니다!

다만, 이미 로그인된 상태에서는 “Okta SSO” 버튼이 표시되지 않을 것으로 예상했습니다. 버튼을 클릭하면 SSO로 루프가 도는 것처럼 동작하다가 다시 초대 페이지로 돌아옵니다. 사용자가 이미 로그인된 상태라면 혼란을 피하기 위해 로그인 버튼을 숨기는 것이 좋지 않을까요?

이 주제는 4일 후 자동으로 닫혔습니다. 더 이상 답변을 할 수 없습니다.