로컬 가입을 비활성화하는 사이트 설정

안녕하세요,

로컬 회원가입은 비활성화하면서 OpenID Connect를 통한 신규 계정 등록은 유지할 수 있는 사이트 설정을 찾고 있습니다.

1월의 사용자 보고서를 살펴보면, 대부분이 This was the error message: New account registrations are not allowed at this time.라는 사이트 텍스트를 지적했으며, 이는 Allow_new_registrations를 활성화하도록 유도했을 것입니다.

사용 가능한 모든 설정을 살펴봐도 OIDC를 통한 등록은 허용되지만 local 사이트는 허용되지 않는다는 명시적인 설정을 찾을 수 없습니다.

대신, DevTools를 사용하여 가입 버튼을 숨김 해제하거나 JS 리디렉션을 선택적으로 비활성화한 사용자(물론 서비스 약관에 위배되는 행위)가 있는지 확인하기 위해 Data Explorer 쿼리를 사용했습니다.

SELECT
  u.id,
  u.username,
  u.name,
  ue.email,
  u.active,
  u.approved,
  u.created_at,
  u.last_seen_at
FROM users u
LEFT JOIN user_associated_accounts uaa
  ON uaa.user_id = u.id
LEFT JOIN user_emails ue
  ON ue.user_id = u.id
 AND ue.primary = true
WHERE uaa.user_id IS NULL
  AND u.staged = false
ORDER BY u.last_seen_at DESC NULLS LAST, u.created_at DESC

정책에 위배되는 사용자가 이메일 주소를 인증해야 한다는 점은 인지하고 있습니다. 다만, 제 OIDC 요구사항을 충족하는 기관에 계정이 없을 수 있는 사용자의 등록을 원하지 않을 뿐입니다.

must_approve_users를 대신하여 must_approve_local_users로 범위를 지정할 수도 있습니다.

그러나 이렇게 하면 이 보안 취약점을 해결하는 부수적 효과로 로그인 페이지로 리디렉션되는 초기 페이지를 비활성화하는 가능성이 제거됩니다.

enable local logins 옵션의 체크를 해제하세요. 이렇게 하면 OpenID 제공자 같은 외부 방식을 통한 가입/로그인은 여전히 가능합니다.

그 옵션을 해제하면 내 포럼이 엔트라(Entra)로 바로 리디렉션되는데, 그렇게 되면 내 포럼이 기관에서 관리하는 것처럼 보일 수 있어요(사실은 그렇지 않은데).

사이트가 로그인 필수인가요? 그렇다면 이 설정을 확인해 보세요:

네, 활성화되어 있습니다. 제가 풀 리퀘스트를 보낸 설정이 바로 그거예요 - 설정 설명에서 '외부’라는 단어를 제거하는 것입니다.

즉, 사이트에 스플래시 화면을 표시하되 로그인 방법으로 OIDC만 활성화하려면 다음을 수행해야 합니다:

  • enable local logins를 해제합니다.
  • auth immediately를 해제합니다.
  • 외부 로그인 방법을 하나 활성화해 둡니다.

이 조건들이 충족되면 다음과 같은 로그인 필요 화면이 표시됩니다:

여기 있는 두 버튼(회원가입 / 로그인) 모두 활성화된 유일한 외부 로그인 방법으로 연결됩니다.

네, https://physicswithethan.discourse.diy 에도 정확히 그렇게 했습니다.

또한 사용자 정의 컴포넌트인 "sign up overrides"도 비활성화했습니다.

1개의 좋아요

모든 설정이 완료되었거나, 가입(Signup) 버튼을 찾지 못하고 계신가요? 이제 allow new registrations를 활성화할 수 있으며, 이는 OIDC를 통한 가입만 가능하게 합니다.

auth immediately를 비활성화하면 사용자가 OIDC 로그인 플로우를 통해 새 계정을 만드는 것을 방지합니까?

아니요, 이 설정은 스플래시가 표시되는지, 아니면 사용자가 바로 로그인 게이트웨이에 연결되는지를 제어할 뿐입니다.

좋아요, login_required.welcome_messagesite_description 둘 다 조정했는데, 스플래시 화면이 훨씬 더 개인화된 느낌을 줬어요.

또한 Auto_skip_create_confirm을 비활성화해서, login_required.welcome_message가 사용자 이름 선택에 대해 정확하게 안내되도록 했어요.

2개의 좋아요

CSS를 사용하지 않고 스플래시 화면의 Sign Up 버튼을 비활성화할 수 있나요? (enable local logins를 OFF가 아닌 ON으로 설정하는 경우)

따라서 사용자는 로컬에서 Invite Link를 통해 가입해야 합니다. 다만 Invite only 설정을 활성화하면 post-OIDC-create_confirm에서 문제가 발생할까 걱정됩니다.

ask.discourse.com에서 다음과 같이 알려주었습니다.

이 조합이 작동한다면, 이전 게시물에서 설명한 문제의 해결책이 될 수 있습니다.

해당 정보가 Invite Only and Auth skip create confirm settings show signup popup when using together 에서 발견되었을 것으로 추정합니다.

그러나 해당 버그 리포트는 OpenID connect 플러그가 아니라 Oauth2에 대한 것입니다.