
שפה 🇮🇱 עברית
רקע
יישום
בקרת גישה ל-SSO
מהי בקרת גישה? 
עם FastComments SSO Access Control, המכונה לפעמים גם RBAC, ניתן להגביל משתמשים כך שיגשו רק לדפים מסוימים או לשרשורי תגובות מסוימים. בנוסף,
משתמשים יכולים לבצע @mention רק זה לזה באותה קבוצה.
בפירוט
אנו יכולים למקם Users ובאופן אופציונלי Pages לתוך קבוצות.
כאשר Users ממוקמים בקבוצות, והאפשרות Limit Comments by SSO User Groups מופעלת בהגדרות הווידג'ט, משתמשים
יראו רק תגובות ממשתמשים באותן קבוצות שלהם ויוכלו לבצע @mention רק למשתמשים באותן קבוצות.
בנוסף, ניתן למקם Pages לתוך קבוצות, ואז משתמשים יוכלו לגשת רק לתגובות של דפים שיש להם גישה אליהם.
אנו מכנים זאת קבוצות ברמת "משתמש" ("User-Level") לעומת קבוצות ברמת "דף" ("Page-Level").
אז איזה מהם מתאים לכם?
השתמשו בקבוצות ברמת משתמש אם...
- אתם רוצים להשתמש באותו ערך
urlId(כתובת URL של דף, או מזהה מאמר), אך להגביל תגובות לפי קבוצה. - לדוגמה, אתם רוצים ליצור קבוצות "משתמש חדש" ו"משתמש ותיק", והם לא אמורים לראות את התגובות זה של זה באותם דפים.
השתמשו בקבוצות ברמת דף אם...
- לקבוצות שלכם יש דפים ספציפיים.
- לדוגמה, משתמשים בקבוצה "דפים ציבוריים" לא אמורים לצפות במאמרים של "Top Secret".
כיצד זה עובד 
בקרת הגישה של FastComments פועלת על ידי הקצאת Pages ו-Users לקבוצות הרצויות.
קבוצה היא פשוט מזהה מחרוזת, כמו GREEN או abc-123.
Users ו-Pages אינם מוגבלים רק לקבוצה אחת. הם מוגבלים ל-100 ו-1000 קבוצות, בהתאמה.
גישה לעמודים בלתי מורשים
אם משתמש מנסה לגשת לעמוד שאין לו גישה אליו, הוא יראה הודעת שגיאה, כמו להלן:
טקסט ההודעה ניתן להתאמה אישית.
המפרט 
הגדרת האופן שבו משתמשים מרובים מתקשרים ובדיקתו היא מורכבת. להלן המפרט הבא שאנו עוקבים אחריו לבקרת גישה, שאותו תוכלו להשתמש כדי לבחון את היישום שלכם:
עמוד עם null מזהי קבוצה, משתמש עם null מזהי קבוצה - צריך לקבל גישה.
עמוד עם null מזהי קבוצה, משתמש עם מזהי קבוצה - צריך לקבל גישה.
עמוד עם מזהי קבוצה, משתמש עם null מזהי קבוצה - צריך לקבל גישה.
עמוד עם מזהי קבוצה, משתמש עם רשימה ריקה - לא צריך לקבל גישה.
עמוד עם מזהי קבוצה, משתמש עם מזהי קבוצה - קיימת חפיפה - צריך לקבל גישה.
עמוד עם מזהי קבוצה, משתמש עם מזהי קבוצה - אין חפיפה - לא צריך לקבל גישה.
עמוד עם רשימה ריקה של מזהי קבוצה (אף אחד לא מקבל גישה), משתמש עם null - לא צריך לקבל גישה.
משתמש SSO A = אין מזהי קבוצה מוגדרים (null = גישה מלאה).
משתמש SSO B = אין מזהי קבוצה מוגדרים (null = גישה מלאה).
A יכול @B.
משתמש SSO A = אין מזהי קבוצה מוגדרים (null = גישה מלאה).
משתמש SSO B = מזהי קבוצה מוגדרים.
A יכול @B.
משתמש SSO A = מזהי קבוצה מוגדרים.
משתמש SSO B = אין מזהי קבוצה מוגדרים (null = גישה מלאה).
A יכול @B.
משתמש SSO A = מזהי קבוצה = [a].
משתמש SSO B = מזהי קבוצה = [b].
A לא יכול @B.
משתמש SSO A = מזהי קבוצה = [a].
משתמש SSO B = מזהי קבוצה = [a, b].
A יכול @B.
יישום 
אזכור משתמשים בקבוצות אחרות
אם שני משתמשים שייכים לשתי קבוצות שונות ואין חפיפה ביניהן, הם לא יוכלו @mention זה את זה.
אם משתמש מקליד ידנית @mention ושולח את התגובה שלו, היא תישאר כטקסט רגיל. המשתמש השני לא יתויג.
ניהול הקבוצות
Groups מוגדרים באמצעות משאבי ה-API Pages ו-SSOUsers, בהתאמה.
ניתן לקרוא ל-API של Pages כדי להגדיר את קבוצות המותרות לגשת לעמוד. כברירת מחדל, כל הקבוצות, וכן משתמשים שאינם שייכים לקבוצה, יש להם גישה.
באופן דומה, ניתן לקרוא ל-API של SSOUsers כדי להגדיר את הקבוצות המשויכות לכל משתמש.
בשני משאבים אלה, אין הגבלות לגבי מתי ניתן להגדיר או לעדכן את הקבוצות.
אם המטרה היא רק להגביל את היכולת של משתמשים לבצע @mention זה לזה, אז לא חייבים להתחשב ב-Pages.
שים לב!
הגדרה ועדכון של קבוצות משתמשי SSO אינה מחייבת שימוש ב-API, וניתן לעדכן זאת אוטומטית על ידי הגדרת מזהי הקבוצות ב-SSO payload המועבר ל-comment widget. עם זאת, עבור רשימות גדולות של קבוצות, זה לא מומלץ מכיוון שהמשתמש יצטרך לשלוח את ה-payload הזה בכל טעינת עמוד.
דוגמאות לקריאות API 
כאן נעבור שלב‑אחר‑שלב על קריאה ל-API של FastComments כדי להגדיר בקרת גישה.
לפני שנתחיל, שימו לב שאיננו צריכים ליצור במפורש מבנה Group. קבוצות הן פשוט מזהים
נוספים ל-Users ו-Pages. הוספת קבוצה למשתמש או לדף יוצרת את הקבוצה באופן אוטומטי.
ראשית, ניצור שני משתמשים, User A ו-User B, — נתחיל אותם בתוך Group X:


עכשיו ניצור Page. נקרא לה Confidential Page, ובינתיים אף אחד מהמשתמשים האלה לא יקבל גישה אליה כיוון שהיא תהיה בקבוצה CONFIDENTIAL:

משתמשים A ו-B כרגע אין להם גישה לדף החדש. עם זאת, מכיוון שהם באותה קבוצה, GROUP-X, הם יכולים לבצע @mention זה לזה.
נעדכן את User B כדי שיוכל כעת לגשת לדף:

User B כעת שייך לשתי הקבוצות. המשתמשים שלנו עדיין יכולים לבצע @mention זה בזה, אך רק User B יכול לצפות בדף הסודי שלנו.
נעשה כך ש-User B יוכל לצפות רק בדף הסודי:

כעת הוא יכול לצפות בדף הסודי, אך אף אחד מהמשתמשים שלנו לא יכול לבצע @mention זה בזה, כיוון שהם בקבוצות שונות.
עם זאת, כל משתמש שאינו חלק מבקרת הגישה יהיה מסוגל לגשת לדף שלנו. כדי למנוע זאת, וודאו שאף משתמש SSO לא מוגדר עם groupIds כ-null. לדוגמה, ניצור את User C, שיש לו גישה להכל:

על ידי הגדרת groupIds כ-null, אנו מצביעים שהם לא מוגבלים על ידי בקרת הגישה.
עכשיו, ניצור דף שלכולם יש גישה אליו:

על ידי הגדרת accessibleByGroupIds כ-null, אנו מצהירים שה-Page הזה אינו נשלט על ידי בקרת גישה, ושני המשתמשים יכולים לגשת אליו.
זה מסיים את הסקירה שלנו של ה-API עבור בקרת גישה.