FastComments.com

アクセス制御とは? Internal Link

With FastComments の SSO アクセス制御、しばしば RBAC とも呼ばれる機能を使うと、ユーザーを特定のページやコメントスレッドのみにアクセスできるよう制限できます。さらに、ユーザー同士は同じグループ内でのみ @mention できます。

詳細

私たちは Users と、オプションで Pages をグループに割り当てることができます。

Users がグループに割り当てられ、ウィジェット設定で Limit Comments by SSO User Groups が有効になっている場合、ユーザーは同じグループにいるユーザーのコメントのみ表示でき、同じグループ内のユーザーにしか @mention できなくなります。

さらに、Pages をグループに割り当てることもでき、その場合ユーザーはアクセス権のあるページのコメントにのみアクセスできます。

これを "User-Level" グループと "Page-Level" グループと呼びます。

では、どちらがあなたに適していますか?

Use User-Level Groups if...

  • 同じ urlId 値(ページ URL または記事 ID)を使用しつつ、グループごとにコメントを制限したい場合。
  • 例えば、「New User」と「Veteran User」グループを設け、同じページ上で互いのコメントを決して見られないようにしたい場合。

Use Page-Level Groups if...

  • グループが特定のページに紐づいている場合。
  • 例えば、「Public Pages」グループのユーザーは「Top Secret」記事を決して閲覧できないようにしたい場合。

仕組み Internal Link

FastComments のアクセス制御は、PagesUsers を目的のグループに割り当てることで機能します。

グループは単純に文字列識別子で、GREENabc-123 のようなものです。

UsersPages は 1 つのグループに限定されません。制限はそれぞれ 1001000 のグループです。

許可されていないページへのアクセス

ユーザーがアクセス権のないページにアクセスしようとすると、以下のようなエラーメッセージが表示されます:

認可失敗の例
認可失敗の例

メッセージテキストはカスタマイズできます。


仕様 Internal Link

複数のユーザーがどのように相互作用するかを定義し、それをテストするのは複雑です。アクセス制御のために私たちが従う以下の仕様は、 実装をテストするために使用できます:

Page with null group ids, user with null group ids - should have access.
Page with null group ids, user with group ids - should have access.
Page with group ids, user with null group ids - should have access.
Page with group ids, user with empty list - should NOT have access.
Page with group ids, user with group ids - intersection exists - should have access.
Page with group ids, user with group ids - intersection does not exist - should NOT have access.
Page with empty list of group ids (nobody has access), user with null - should NOT have access.

SSO User A = group idsが定義されていない (null = フルアクセス).
SSO User B = group idsが定義されていない (null = フルアクセス).
Aは@Bできる.

SSO User A = group idsが定義されていない (null = フルアクセス).
SSO User B = Group ids defined.
Aは@Bできる.

SSO User A = Group ids defined.
SSO User B = group idsが定義されていない (null = フルアクセス).
Aは@Bできる.

SSO User A = Group ids = [a].
SSO User B = Group ids = [b].
Aは@Bできない.

SSO User A = Group ids = [a].
SSO User B = Group ids = [a, b].
Aは@Bできる.

実装 Internal Link

別グループのユーザーへのメンション

もし2人のユーザーがそれぞれ異なるグループの集合に属しており、交差がない場合、互いに@mentionすることはできません。

ユーザーが手動で@mentionを入力してコメントを送信した場合、それはプレーンテキストのまま残ります。相手のユーザーはタグ付けされません。

グループの管理

GroupsはそれぞれPagesおよびSSOUsers API リソースを使用して定義されます。

Pages API はページにアクセスできるグループの集合を定義するために呼び出すことができます。デフォルトでは、すべてのグループとグループに属していないユーザーにもアクセス権があります。

同様に、SSOUsers API は各ユーザーに関連付けられたグループを定義するために呼び出すことができます。

両方のリソースについて、グループを設定または更新するタイミングに制限はありません。

ユーザー同士の@mentionのみを制限したい場合、Pages を考慮する必要はありません。

注意!

SSOユーザーグループの定義と更新は API を使用する必要はなく、代わりにコメントウィジェットに渡される SSO ペイロード内でグループ ID を定義することで自動的に更新できます。ただし、グループのリストが大きい場合は、ユーザーが各ページ読み込みごとにこのペイロードを送信する必要があるため推奨されません。