FastComments.com

SSOアクセス制御

アクセス制御とは? Internal Link

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

詳細

Users と、オプションで Pages をグループに配置できます。

Users をグループに配置し、ウィジェット設定で Limit Comments by SSO User Groups を有効にすると、ユーザーは同じグループに属するユーザーのコメントのみを表示でき、同じグループ内のユーザーにのみ @mention できるようになります。

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

これを「ユーザーレベル」グループと「ページレベル」グループと呼びます。

では、どちらが適切でしょうか?

ユーザーレベルグループを使用すべき場合...

  • 同じ urlId 値(ページURLや記事ID)を使用しつつ、グループごとにコメントを制限したい場合。
  • 例えば、「新規ユーザー」と「ベテランユーザー」のグループを作り、同じページ上でお互いのコメントを見えなくしたい場合。

ページレベルグループを使用すべき場合...

  • グループごとに特定のページがある場合。
  • 例えば、「公開ページ」グループのユーザーが「トップシークレット」の記事を閲覧できないようにしたい場合。

仕組み Internal Link

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

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

Users と Pages は 1 つのグループに限定されません。制限はそれぞれ 100 と 1000 のグループです。

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

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

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

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

仕様 Internal Link

複数のユーザーがどのようにやり取りするかを定義し、それをテストすることは複雑です。以下は、当社がアクセス制御のために従っている仕様です。実装をテストする際にご利用いただけます:

グループ ID が null のページ、グループ ID が null のユーザー - アクセス可能であるべき。
グループ ID が null のページ、グループ ID を持つユーザー - アクセス可能であるべき。
グループ ID を持つページ、グループ ID が null のユーザー - アクセス可能であるべき。
グループ 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

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

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

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

グループの管理

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

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

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

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

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

注意!

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