FastComments.com

SSO 접근 제어

접근 제어란 무엇인가? Internal Link

FastComments SSO Access Control(RBAC라고도 함)을 사용하면 사용자가 특정 페이지 또는 댓글 스레드에만 접근하도록 제한할 수 있습니다. 또한, 사용자는 같은 그룹 내의 사용자에게만 @mention을 할 수 있습니다.

상세 설명

Users와 선택적으로 Pages를 그룹에 넣을 수 있습니다.

Users가 그룹에 배치되고 Widget Settings에서 Limit Comments by SSO User Groups가 활성화되면, 사용자는 같은 그룹에 속한 사용자의 댓글만 볼 수 있으며 같은 그룹의 사용자에게만 @mention을 할 수 있습니다.

또한, Pages를 그룹에 배치하면 사용자는 접근 권한이 있는 페이지의 댓글에만 접근할 수 있습니다.

이를 "사용자 수준(User-Level)" 그룹과 "페이지 수준(Page-Level)" 그룹이라고 부릅니다.

그렇다면 어느 쪽이 적합할까요?

다음 경우에 사용자 수준 그룹을 사용하세요...

  • 동일한 urlId 값(페이지 URL 또는 아티클 ID)을 사용하면서 그룹별로 댓글을 제한하고 싶은 경우.
  • 예를 들어, "신규 사용자"와 "베테랑 사용자" 그룹을 만들고, 같은 페이지에서 서로의 댓글을 볼 수 없게 하고 싶은 경우.

다음 경우에 페이지 수준 그룹을 사용하세요...

  • 그룹이 특정 페이지를 가지고 있는 경우.
  • 예를 들어, "공개 페이지" 그룹의 사용자는 "Top Secret" 아티클을 볼 수 없어야 하는 경우.

작동 방식 Internal Link

FastComments 액세스 제어는 원하는 그룹에 Pages 및 Users를 할당하는 방식으로 작동합니다.

그룹은 단순히 문자열 식별자이며, 예: GREEN 또는 abc-123.

Users와 Pages는 하나의 그룹에만 제한되지 않습니다. 각각 100 및 1000개의 그룹으로 제한됩니다.

권한이 없는 페이지에 접근

사용자가 접근 권한이 없는 페이지에 접근하려고 하면, 아래와 같은 오류 메시지가 표시됩니다:

권한 실패 예시
Authorization Failure Example

메시지 텍스트는 사용자 지정할 수 있습니다.

명세 Internal Link

여러 사용자가 상호작용하는 방식을 정의하고 이를 테스트하는 것은 복잡합니다. 다음은 접근 제어에 대해 우리가 따르는 규격이며, 구현을 테스트하는 데 사용할 수 있습니다:

그룹 ID가 null인 페이지, 그룹 ID가 null인 사용자 - 접근 가능해야 합니다.
그룹 ID가 null인 페이지, 그룹 ID가 있는 사용자 - 접근 가능해야 합니다.
그룹 ID가 있는 페이지, 그룹 ID가 null인 사용자 - 접근 가능해야 합니다.
그룹 ID가 있는 페이지, 그룹 ID가 빈 리스트인 사용자 - 접근할 수 없어야 합니다.
그룹 ID가 있는 페이지, 그룹 ID가 있는 사용자 - 교집합이 존재함 - 접근 가능해야 합니다.
그룹 ID가 있는 페이지, 그룹 ID가 있는 사용자 - 교집합이 없음 - 접근할 수 없어야 합니다.
그룹 ID가 빈 리스트인 페이지(아무도 접근 불가), 그룹 ID가 null인 사용자 - 접근할 수 없어야 합니다.

SSO 사용자 A = 그룹 ID 미정의 (null = 전체 접근).
SSO 사용자 B = 그룹 ID 미정의 (null = 전체 접근).
A는 @B를 언급할 수 있습니다.

SSO 사용자 A = 그룹 ID 미정의 (null = 전체 접근).
SSO 사용자 B = 그룹 ID 정의됨.
A는 @B를 언급할 수 있습니다.

SSO 사용자 A = 그룹 ID 정의됨.
SSO 사용자 B = 그룹 ID 미정의 (null = 전체 접근).
A는 @B를 언급할 수 있습니다.

SSO 사용자 A = 그룹 ID = [a].
SSO 사용자 B = 그룹 ID = [b].
A는 @B를 언급할 수 없습니다.

SSO 사용자 A = 그룹 ID = [a].
SSO 사용자 B = 그룹 ID = [a, b].
A는 @B를 언급할 수 있습니다.

구현 Internal Link

다른 그룹의 사용자 멘션하기

만약 두 사용자가 서로 다른 그룹 집합에 속하고 교집합이 없다면, 서로를 @mention할 수 없습니다.

사용자가 수동으로 @mention을 입력하고 댓글을 제출하면, 그것은 일반 텍스트로 남습니다. 다른 사용자는 태그되지 않습니다.

그룹 유지 관리

Groups는 각각 Pages 및 SSOUsers API 리소스를 사용하여 정의됩니다.

Pages API는 페이지에 접근할 수 있는 그룹 집합을 정의하도록 호출할 수 있습니다. 기본적으로 모든 그룹과 그룹에 속하지 않은 사용자들도 접근할 수 있습니다.

유사하게, SSOUsers API는 각 사용자와 연관된 그룹을 정의하도록 호출할 수 있습니다.

두 리소스 모두 그룹을 언제 설정하거나 업데이트할지에 대한 제한은 없습니다.

만약 사용자가 서로를 @mention하는 것을 제한하는 것만 원한다면, Pages를 고려할 필요는 없습니다.

참고!

SSO 사용자 그룹을 정의하고 업데이트하는 데 API를 사용할 필요는 없으며, 대신 댓글 위젯에 전달되는 SSO 페이로드에 그룹 ID를 정의하여 자동으로 업데이트할 수 있습니다. 그러나 그룹 목록이 많을 경우 사용자가 매 페이지 로드마다 이 페이로드를 제출해야 하므로 권장되지 않습니다.