
์ธ์ด ๐ฐ๐ท ํ๊ตญ์ด
๋ฐฐ๊ฒฝ
๊ตฌํ
์ ๊ทผ ์ ์ด๋ ๋ฌด์์ธ๊ฐ? 
With FastComments SSO Access Control, sometimes referred to as RBAC, users can be restricted to only access certain pages, or comment threads. Additionally,
์ฌ์ฉ์๋ ๋์ผํ ๊ทธ๋ฃน์ ์๋ ์ฌ์ฉ์๋ง @mentionํ ์ ์์ต๋๋ค.
์์ธํ
์ฐ๋ฆฌ๋ Users์ ์ ํ์ ์ผ๋ก Pages๋ฅผ ๊ทธ๋ฃน์ ๋ฐฐ์นํ ์ ์์ต๋๋ค.
Users๊ฐ ๊ทธ๋ฃน์ ๋ฐฐ์น๋๊ณ Limit Comments by SSO User Groups๊ฐ ์์ ฏ ์ค์ ์์ ํ์ฑํ๋๋ฉด, ๊ทธ๋ฐ ๊ฒฝ์ฐ ์ฌ์ฉ์๋ค์
๋์ผํ ๊ทธ๋ฃน์ ์ํ ์ฌ์ฉ์๋ค์ ๋๊ธ๋ง ๋ณด๊ฒ ๋๋ฉฐ ๋์ผํ ๊ทธ๋ฃน์ ์ฌ์ฉ์๋ค๋ง @mentionํ ์ ์์ต๋๋ค.
๋ํ, Pages๋ฅผ ๊ทธ๋ฃน์ ๋ฐฐ์นํ ์ ์์ผ๋ฉฐ, ๊ทธ ๊ฒฝ์ฐ ์ฌ์ฉ์๋ ์ ๊ทผ ๊ถํ์ด ์๋ ํ์ด์ง์ ๋๊ธ๋ง ๋ณผ ์ ์์ต๋๋ค.
์ด๋ฅผ "User-Level" ๊ทธ๋ฃน๊ณผ "Page-Level" ๊ทธ๋ฃน์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ ๊ฒ์ด ์ ํฉํ ๊น์?
User-Level ๊ทธ๋ฃน์ ์ฌ์ฉํ ๊ฒฝ์ฐ...
- ๊ฐ์
urlId๊ฐ(ํ์ด์ง URL ๋๋ ๊ธฐ์ฌ ID)์ ์ฌ์ฉํ๋, ๊ทธ๋ฃน๋ณ๋ก ๋๊ธ์ ์ ํํ๋ ค๋ ๊ฒฝ์ฐ. - ์๋ฅผ ๋ค์ด, "New User"์ "Veteran User" ๊ทธ๋ฃน์ ๋ง๋ค๊ณ ๋์ผํ ํ์ด์ง์์ ์๋ก์ ๋๊ธ์ ์ ๋ ๋ณด์ง ๋ชปํ๊ฒ ํ๋ ค๋ ๊ฒฝ์ฐ.
Page-Level ๊ทธ๋ฃน์ ์ฌ์ฉํ ๊ฒฝ์ฐ...
- ๊ทธ๋ฃน๋ง๋ค ํน์ ํ์ด์ง๊ฐ ์๋ ๊ฒฝ์ฐ.
- ์๋ฅผ ๋ค์ด, "Public Pages" ๊ทธ๋ฃน์ ์ํ ์ฌ์ฉ์๋ "Top Secret" ๊ธฐ์ฌ๋ค์ ์ ๋ ๋ณผ ์ ์์ด์ผ ํฉ๋๋ค.
์๋ ๋ฐฉ์ 
FastComments ์ก์ธ์ค ์ ์ด๋ ์ํ๋ ๊ทธ๋ฃน์ Pages ๋ฐ Users๋ฅผ ํ ๋นํ๋ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค.
๊ทธ๋ฃน์ ๋จ์ํ ๋ฌธ์์ด ์๋ณ์์ด๋ฉฐ, ์: GREEN ๋๋ abc-123.
Users์ Pages๋ ํ๋์ ๊ทธ๋ฃน์๋ง ์ ํ๋์ง ์์ต๋๋ค. ๊ฐ๊ฐ 100 ๋ฐ 1000๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ์ ํ๋ฉ๋๋ค.
๊ถํ์ด ์๋ ํ์ด์ง์ ์ ๊ทผ
์ฌ์ฉ์๊ฐ ์ ๊ทผ ๊ถํ์ด ์๋ ํ์ด์ง์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด, ์๋์ ๊ฐ์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค:
๋ฉ์์ง ํ ์คํธ๋ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค.
๋ช
์ธ 
์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ์ํธ์์ฉํ๋ ๋ฐฉ์์ ์ ์ํ๊ณ ์ด๋ฅผ ํ ์คํธํ๋ ๊ฒ์ ๋ณต์กํฉ๋๋ค. ๋ค์์ ์ ๊ทผ ์ ์ด์ ๋ํด ์ฐ๋ฆฌ๊ฐ ๋ฐ๋ฅด๋ ๊ท๊ฒฉ์ด๋ฉฐ, ๊ตฌํ์ ํ ์คํธํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค:
๊ทธ๋ฃน 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๋ฅผ ์ธ๊ธํ ์ ์์ต๋๋ค.๊ตฌํ 
๋ค๋ฅธ ๊ทธ๋ฃน์ ์ฌ์ฉ์ ๋ฉ์ ํ๊ธฐ
๋ง์ฝ ๋ ์ฌ์ฉ์๊ฐ ์๋ก ๋ค๋ฅธ ๊ทธ๋ฃน ์งํฉ์ ์ํ๊ณ ๊ต์งํฉ์ด ์๋ค๋ฉด, ์๋ก๋ฅผ @mentionํ ์ ์์ต๋๋ค.
์ฌ์ฉ์๊ฐ ์๋์ผ๋ก @mention์ ์
๋ ฅํ๊ณ ๋๊ธ์ ์ ์ถํ๋ฉด, ๊ทธ๊ฒ์ ์ผ๋ฐ ํ
์คํธ๋ก ๋จ์ต๋๋ค. ๋ค๋ฅธ ์ฌ์ฉ์๋ ํ๊ทธ๋์ง ์์ต๋๋ค.
๊ทธ๋ฃน ์ ์ง ๊ด๋ฆฌ
Groups๋ ๊ฐ๊ฐ Pages ๋ฐ SSOUsers API ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ์๋ฉ๋๋ค.
Pages API๋ ํ์ด์ง์ ์ ๊ทผํ ์ ์๋ ๊ทธ๋ฃน ์งํฉ์ ์ ์ํ๋๋ก ํธ์ถํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๊ทธ๋ฃน๊ณผ ๊ทธ๋ฃน์ ์ํ์ง ์์ ์ฌ์ฉ์๋ค๋ ์ ๊ทผํ ์ ์์ต๋๋ค.
์ ์ฌํ๊ฒ, SSOUsers API๋ ๊ฐ ์ฌ์ฉ์์ ์ฐ๊ด๋ ๊ทธ๋ฃน์ ์ ์ํ๋๋ก ํธ์ถํ ์ ์์ต๋๋ค.
๋ ๋ฆฌ์์ค ๋ชจ๋ ๊ทธ๋ฃน์ ์ธ์ ์ค์ ํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ ์ง์ ๋ํ ์ ํ์ ์์ต๋๋ค.
๋ง์ฝ ์ฌ์ฉ์๊ฐ ์๋ก๋ฅผ @mentionํ๋ ๊ฒ์ ์ ํํ๋ ๊ฒ๋ง ์ํ๋ค๋ฉด, Pages๋ฅผ ๊ณ ๋ คํ ํ์๋ ์์ต๋๋ค.
์ฐธ๊ณ !
SSO ์ฌ์ฉ์ ๊ทธ๋ฃน์ ์ ์ํ๊ณ ์ ๋ฐ์ดํธํ๋ ๋ฐ API๋ฅผ ์ฌ์ฉํ ํ์๋ ์์ผ๋ฉฐ, ๋์ ๋๊ธ ์์ ฏ์ ์ ๋ฌ๋๋ SSO ํ์ด๋ก๋์ ๊ทธ๋ฃน ID๋ฅผ ์ ์ํ์ฌ ์๋์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ฃน ๋ชฉ๋ก์ด ๋ง์ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ๋งค ํ์ด์ง ๋ก๋๋ง๋ค ์ด ํ์ด๋ก๋๋ฅผ ์ ์ถํด์ผ ํ๋ฏ๋ก ๊ถ์ฅ๋์ง ์์ต๋๋ค.
์์ API ํธ์ถ 
์ฌ๊ธฐ์๋ FastComments API๋ฅผ ํธ์ถํ์ฌ ์ก์ธ์ค ์ ์ด๋ฅผ ์ค์ ํ๋ ๊ณผ์ ์ ์๋ดํฉ๋๋ค.
์์ํ๊ธฐ ์ ์, 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๊ฐ ๊ธฐ๋ฐ ํ์ด์ง๋ง ๋ณผ ์ ์๋๋ก ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค:

์ด์ User B๋ ๊ธฐ๋ฐ ํ์ด์ง๋ฅผ ๋ณผ ์ ์์ง๋ง, ๋ ์ฌ์ฉ์๋ ์๋ก ๋ค๋ฅธ ๊ทธ๋ฃน์ ์ํด ์์ผ๋ฏ๋ก ์๋ก @mentionํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ก์ธ์ค ์ ์ด์ ํฌํจ๋์ง ์์ ์ฌ์ฉ์๋ ๋๊ตฌ๋ ํ์ด์ง์ ์ ๊ทผํ ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด SSO ์ฌ์ฉ์์ groupIds๊ฐ null๋ก ์ค์ ๋์ง ์์๋์ง ํ์ธํ์ธ์. ์๋ฅผ ๋ค์ด, ๋ชจ๋ ๊ฒ์ ์ ๊ทผํ ์ ์๋ User C๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค:

groupIds๋ฅผ null๋ก ์ค์ ํ๋ฉด ํด๋น ์ฌ์ฉ์๋ ์ก์ธ์ค ์ ์ด์ ์ ํ์ ๋ฐ์ง ์๋๋ค๊ณ ์ง์ ํ๋ ๊ฒ์
๋๋ค.
์ด์ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ ๊ทผํ ์ ์๋ ํ์ด์ง๋ฅผ ํ๋ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค:

accessibleByGroupIds๋ฅผ null๋ก ์ค์ ํ๋ฉด ์ด Page๋ ์ก์ธ์ค ์ ์ด๋ก ๊ด๋ฆฌ๋์ง ์์ผ๋ฉฐ, ๋ ์ฌ์ฉ์ ๋ชจ๋ ์ ๊ทผํ ์ ์์ต๋๋ค.
์ด๋ก์จ ์ก์ธ์ค ์ ์ด์ ๋ํ API ์ํฌ์ค๋ฃจ๋ฅผ ์๋ฃํ์ต๋๋ค.