rodypl
(Rodolphe)
4월 7, 2021, 8:25오전
1
저는 개발자가 아니어서 제 질문에 대한 답을 찾으려면 무엇을 검색해야 할지조차 모르겠습니다. 현재 저는 Discourse를 시험 사용 중인데, 사용자 로그인 방식이 계속 마음에 걸리고 있습니다.
시험 사용 초기에는 기간이 끝나면 SSO를 도입하는 것이 좋겠다고 확신했지만, 지금은 확신이 서지 않습니다. SSO를 활성화하면 Discourse의 유용한 기능들(예: 초대 기능)을 잃게 되는 것 같고, 제 경우 그 이점이 그 정도를 감당할 가치가 있는지 모르겠습니다.
포럼에서 Discourse 내장 계정과 제 사이트 계정을 동시에 사용할 수 있을까요? Facebook/Google/Apple로 로그인할 수 있는 옵션을 설정하는 방식처럼요?
사용자가 로그인하거나 계정을 만들려고 할 때 이메일/비밀번호 입력란이 표시되고, 그 오른쪽에 Facebook, Google 등으로 로그인할 수 있는 옵션이 제공되는 방식을 아시죠? 제 사이트 계정도 그 오른쪽 옵션 중 하나로 설정할 수 있을까요?
즉, 사용자가 포럼 전용 계정을 새로 만들지 않고 메인 사이트 로그인만 사용하고 싶다면 그렇게 할 수 있지만, 필수 사항은 아닌 방식입니다.
이것이 가능한가요? 그리고 이 방법을 권장할 만한가요? 이 방식을 피해야 하는 이유가 있을까요? 감사합니다!
david
(David Taylor)
4월 7, 2021, 9:10오전
2
"SSO"로 무엇을 의미하시느냐에 따라 다릅니다:
rodypl:
(초대 기능 같은 경우)
그 부분은 좋은 소식입니다. 최근 DiscourseConnect 에 초대 지원 기능을 추가했습니다.
committed 12:20AM - 19 Mar 21 UTC
This PR allows invitations to be used when the DiscourseConnect SSO is enabled f… or a site (`enable_discourse_connect`) and local logins are disabled. Previously invites could not be accepted with SSO enabled simply because we did not have the code paths to handle that logic.
The invitation methods that are supported include:
* Inviting people to groups via email address
* Inviting people to topics via email address
* Using invitation links generated by the Invite Users UI in the /my/invited/pending route
The flow works like this:
1. User visits an invite URL
2. The normal invitation validations (redemptions/expiry) happen at that point
3. We store the invite key in a secure session
4. The user clicks "Accept Invitation and Continue" (see below)
5. The user is redirected to /session/sso then to the SSO provider URL then back to /session/sso_login
6. We retrieve the invite based on the invite key in secure session. We revalidate the invitation. We show an error to the user if it is not valid. An additional check here for invites with an email specified is to check the SSO email matches the invite email
7. If the invite is OK we create the user via the normal SSO methods
8. We redeem the invite and activate the user. We clear the invite key in secure session.
9. If the invite had a topic we redirect the user there, otherwise we redirect to /
Note that we decided for SSO-based invites the `must_approve_users` site setting is ignored, because the invite is a form of pre-approval, and because regular non-staff users cannot send out email invites or generally invite to the forum in this case.
Also deletes some group invite checks as per https://github.com/discourse/discourse/pull/12353
다른 로그인 방법의 경우:
committed 01:27AM - 09 Mar 21 UTC
이러한 변경 사항은 최신 버전의 Discourse에서 적용되었습니다.
pfaffman
(Jay Pfaffman)
4월 7, 2021, 10:35오전
3
서버에 oauth2를 구현하여 Google이나 GitHub 등 다른 서비스처럼 작동하게 만들면 됩니다. (개발자가 아니시라면 누군가 대신 해달라고 요청하는 것도 좋은 방법입니다.)
rodypl
(Rodolphe)
4월 7, 2021, 1:18오후
4
david:
OAuth2, OpenID Connect 또는 기타 인증 플러그인에 대해 말씀하시는 것이라면, 네, 그것들은 서로 함께 사용할 수 있으며, 이메일/비밀번호 로그인과도 함께 사용할 수 있습니다.
감사합니다! 관련 문서 링크를 주실 수 있을까요?
david
(David Taylor)
4월 7, 2021, 1:24오후
5
SSO와 초대 기능 간의 호환성 기능이 기대되지만, 제 환경에서는 작동하지 않는 것 같습니다.
제 메인 사이트는 WordPress이고, 두 애플리케이션을 통합하기 위해 WP Discourse 플러그인을 사용하고 있습니다. 또한 WordPress에서 이메일 인증을 수행하는 등록 폼을 가지고 있으며, 사용자가 등록할 때 Discourse가 중복된 인증 이메일을 보내지 않도록 방지하는 사용자 정의 코드를 작성했습니다. 커뮤니티 접근을 승인 없이 막기 위해 discourse에서 must_approve_users를 활성화했습니다.
다음 단계를 따랐지만, 결국 사용자는 승인되지 않았습니다. 이전과 똑같습니다.
이메일 주소로 사용자 초대
사용자가 이메일 초대를 열고 링크를 클릭
사용자가 환영 메시지와 계속하기 CTA가 있는 discourse 로그아웃 페이지로 이동
CTA를 클릭하면 WordPress의 로그인 페이지로 이동
사용자가 WordPress에 등록되어 있지 않으므로, 사용자를 위한 새 계정을 생성해야 했습니다 - WordPress가 Discourse가 이 사용자를 초대했다는 사실을 알 수 없으므로 이것이 타당하다고 생각합니다 .
등록 후 WordPress에서 확인 이메일을 받습니다. 해당 이메일을 클릭하면 WordPress의 로그인 페이지로 이동합니다.
WordPress에 로그인한 후 커뮤니티에 접속을 시도하지만, 접속할 수 없습니다.
관리자 계정으로 이동하여 사용자 상태를 확인해 보니, 예상대로 ‘승인 필요(Needs approval)’ 상태입니다. 이는 초대를 보내기 전과 정확히 동일한 상황입니다.
무엇을 놓치고 있는 걸까요? 따르야 할 다른 플로우가 있을까요? 이미 WordPress에 등록된 사용자만 초대할 수 있는 건가요? 여기에 대한 안내를 구합니다. 감사합니다.
제 Discourse 버전: 2.8.0.beta1