์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ๊ด๋ฆฌ
์ด ํ์ด์ง์ ๋ด์ฉ
์๋ก
Atlas App Services๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ข ์ฌ์ฉ์์ ๋ํ ์ธ์ฆ์ ๊ด๋ฆฌํฉ๋๋ค. App Services:
์ญํ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์ก์ธ์ค ๊ท์น์ ์ฌ์ฉํ์ฌ ์ฝ๊ธฐ & ์ฐ๊ธฐ ๊ถํ์ ๊ฒฐ์ ํฉ๋๋ค.
๋ชจ๋ ์์ฒญ์ ์ธ์ฆ๋ ์ฌ์ฉ์์ ์ฐ๊ฒฐ
์์ฒญ์ ํฌํจ๋ ๋ชจ๋ ๊ฐ์ฒด์ ๋ํ ๊ถํ์ ํ๊ฐํฉ๋๋ค.
์ฌ์ฉ์ ๊ณ์ ์ ํตํด ๊ฐ ์ฌ์ฉ์์ ๋ํ ๋ฉํ๋ฐ์ดํฐ ๋ฐ ์ฌ์ฉ์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ก์ธ์คํ ์ ์์ต๋๋ค.
์ฌ์ฉ์๋ ์ธ์ฆ ์ ๊ณต์๋ฅผ ํตํด ๋ก๊ทธ์ธํฉ๋๋ค. ๊ฐ ์ ๊ณต์๋ ํน์ ์ธ์ฆ ๋ฐฉ๋ฒ์ ๋ํ๋ ๋๋ค.
์ฑ ์๋น์ค์๋ Facebook ๋ฐ Google ๋ฑ์ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ๊ธฐ๋ณธ ์ ๊ณต์ ์ฒด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.์ปค์คํ ์ ๊ณต์๋ฅผ ํตํด ๋ชจ๋ ์ธ๋ถ ์ธ์ฆ ์์คํ ์ ํตํฉํ ์ ์์ต๋๋ค.
๋ค์ ๋ํ๋ ํด๋ผ์ด์ธํธ ์ฑ, Atlas App Services, ๊ทธ๋ฆฌ๊ณ ์ธ์ฆ ์ ๊ณต์๊ฐ ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ๊ธฐ ์ํด ์ด๋ป๊ฒ ์ํธ ์์ฉํ๋์ง ๋ณด์ฌ์ค๋๋ค.

๊ฐ๋
์ธ์ฆ ๊ณต๊ธ์
App Services์์ ์ธ์ฆ ์ ๊ณต์๋ ๋ชจ๋์ ์๋น์ค์ ๋๋ค. ์ด๋ฌํ ์๋น์ค๋ ์ ์ ํ์ธ์ ์ ๊ณตํ๊ณ ์ฑ ์ฌ์ฉ์์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค.
์ฌ์ฉ์๋ ์ธ์ฆ ์ ๊ณต์์๊ฒ ์ผ๋ จ์ ์๊ฒฉ ์ฆ๋ช ์ ์ ๊ณตํ์ฌ ์ ์์ ์ธ์ฆํฉ๋๋ค. ์ ํจํ ์๊ฒฉ ์ฆ๋ช ์ ์ฌ์ฉํ๋ฉด ์ ๊ณต์๋ ์ฌ์ฉ์์ ์ฐ๊ฒฐ๋ ๊ณ ์ ํ ID๋ฅผ ๋ฐํํฉ๋๋ค. App Services์์ ํ์ฑ ์ฌ์ฉ์๋ก ๋ก๊ทธ์ธํฉ๋๋ค.
App Services์๋ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ๊ธฐ๋ณธ ์ธ์ฆ ์ ๊ณต์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
์ฌ์ฉ์ ์ง์ ๊ณต๊ธ์ ์ฒด๋ฅผ ๊ตฌ์ฑํ์ฌ ์ธ๋ถ ์ธ์ฆ ์์คํ ์ ํตํฉํ ์ ์์ต๋๋ค.
์ปค์คํ JWT: ์ ๊ณต์๊ฐ ์ธ๋ถ ์์คํ ์์ ์๋ช ํ JSON web token์ ํ์ฉํฉ๋๋ค.
์ฌ์ฉ์ ์ง์ ํจ์: ๊ณต๊ธ์๋ฅผ ์ฌ์ฉํ๋ฉด Atlas Function์์ ์ฌ์ฉ์ ์ง์ ๋ก๊ทธ์ธ ๋ก์ง์ ์ ์ํ ์ ์์ต๋๋ค.
์ค์
์ฌ์ฉ์ ์ธ์ฆ์ด ํ์ํ ์ฑ
๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์๋ ํ๋ ์ด์์ ์ธ์ฆ ์ ๊ณต์๊ฐ ๊ตฌ์ฑ ๋ฐ ํ์ฑํ๋์ด ์์ด์ผ ํฉ๋๋ค. ์ ๊ณต์๊ฐ ํ๋ ์ด์ ์์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ธ์ฆ ๊ณต๊ธ์ ์ฒด๋ฅผ ๊ตฌ์ฑํ๊ณ ํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๋ฉด ๋ค์์ ์ฐธ์กฐํ์ธ์: ์ธ์ฆ ์ ๊ณต์.
์ฌ์ฉ์ ๊ณ์
์ฌ์ฉ์ ๊ณ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ ์ ํ ๋จ์ผ ์ฌ์ฉ์๋ฅผ ๋ํ๋ ๋๋ค. App Services๋ ์ธ์ฆ ์ ๊ณต์๊ฐ ๊ณ ์ ID์ ์ ํจ์ฑ์ ๊ฒ์ฌํ ๋ ์ฌ์ฉ์๋ฅผ ์์ฑํฉ๋๋ค. ์ธ์ฆ ์ ๊ณต์๋ก๋ถํฐ ์ด๋ฉ์ผ์ด๋ ์์ผ๊ณผ ๊ฐ์ ์ฌ์ฉ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๊ฐ ์ฌ์ฉ์๋ฅผ ์ฌ์ฉ์ ์ง์ ๋ฐ์ดํฐ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
ํ
Apple ๊ณ์ ์ญ์ ์๊ฑด
Apple์ ๋ฐ๋ฅด๋ฉด App Store๋ฅผ ํตํด ๋ฐฐํฌ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ์ ์ ์์ฑํ๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๊ณ์ ์ ์ญ์ ํ ์ ์๋ ์ต์ ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์ด๋ฉ์ผ/๋น๋ฐ๋ฒํธ ์ธ์ฆ๊ณผ ๊ฐ์ด ์ฌ์ฉ์๋ฅผ ์๋์ผ๋ก ๋ฑ๋กํด์ผ ํ๋ ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ์ฑ์ด๋ 'Apple๋ก ๋ก๊ทธ์ธ'๊ณผ ๊ฐ์ด ์ฌ์ฉ์๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ์ฑ์ด๋ App Store๋ฅผ ํตํด ๋ฐฐํฌ๋๋ ์ฑ์ ์ฌ์ฉ์ ๊ณ์ ์ญ์ ๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค.
์ธ์ฆ ์ ๊ณต์ ID
App Services๋ ์ธ์ฆ ์ ๊ณต์ ID์ ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. App Services๋ ์ด ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๋ฅผ ์ธ์ฆํฉ๋๋ค.
์ธ์ฆ ์ ๊ณต์๋ก ์ฒ์ ๋ก๊ทธ์ธํ๋ฉด App Services๋ ID ๊ฐ์ฒด๋ฅผ ๋ง๋ญ๋๋ค. ๊ฐ ๊ฐ์ฒด์๋ ๊ณ ์ ID์ ์ฌ์ฉ์์ ๋ํ ์ ๊ณต์๋ณ ๋ฉํ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๋์ค์ ๋ก๊ทธ์ธํ๋ฉด App Services๋ ๊ธฐ์กด ID ๋ฐ์ดํฐ๋ฅผ ์๋ก ๊ณ ์นฉ๋๋ค.
ํ๋์ ์ฌ์ฉ์ ๊ณ์ ์ ๋ ๊ฐ ์ด์์ ID๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Realm SDK๋ฅผ ํ์ฑํํ๋ฉด ๋ณต์์ ID๋ฅผ ๊ธฐ์กด ์ฌ์ฉ์ ๊ณ์ ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ๋ ๊ฐ ์ด์์ ๊ณต๊ธ์ ์ฒด์์ ๋จ์ผ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ํด๋ผ์ด์ธํธ SDK์ ID ์ฐ๊ฒฐ์ ๋ํ ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์กํฐ๋ธ ์ฌ์ฉ์
Realm SDK์์๋ ๋ ๋ช ์ด์์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ ์ ์์ง๋ง, ์ด๋ ์์ ์์๋ ํ๋์ ๊ณ์ ๋ง ํ์ฑ ์ํ๊ฐ ๋ ์ ์์ต๋๋ค ์กํฐ๋ธ ์ฌ์ฉ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ฒญ๊ณผ ์ฐ๊ฒฐ๋ ์ฌ์ฉ์ ๊ณ์ ์ ๋๋ค.
App Services๋ ํ์ฑ ์ฌ์ฉ์๋ก์ ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฒญ์ ์คํํฉ๋๋ค. App Services๋ ์ฌ์ฉ์์ ๋ํ ๋์ ์ฐธ์กฐ(์: JSON ํํ์์ %%user
)๋ฅผ ํ์ฑ ์ฌ์ฉ์๋ก ๋์ฒดํฉ๋๋ค.
ํน์ ์กํฐ๋ธ ์ฌ์ฉ์ ๋๋ ์์คํ ์ฌ์ฉ์๋ฅผ ์ฌ์ฉํ์ฌ ํจ์๋ฅผ ์คํํ ์ ์์ต๋๋ค.
์์คํ ์ฌ์ฉ์
์์คํ ์ฌ์ฉ์๋ ๊ณ ๊ธ ๊ถํ์ด ์๋ ๋ด๋ถ ์ฌ์ฉ์์ ๋๋ค. ์์คํ ์ฌ์ฉ์๋ ๋ชจ๋ ๊ท์น์ ์ฐํํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์์ฒญํ๋ ๋์ ์์คํ ์ฌ์ฉ์๋ก ํจ์๋ฅผ ์คํํ ์ ์์ต๋๋ค. ํธ๋ฆฌ๊ฑฐ๋ ์์คํ ์ฌ์ฉ์์ ์ปจํ ์คํธ์์ ์คํ๋ฉ๋๋ค.
์์คํ ์ฌ์ฉ์๋ ๊ด๋ฆฌ ์์ ์ ์ ์ฉํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
๊ท์น ๋ฐ ์ฟผ๋ฆฌ๋ฅผ ์ฐํํด์ผ ํ๋ ์์
MongoDB CRUD ๋ฐ ์ง๊ณ ์์ ์ ๋ํ ๋ฌด์ ํ ์ก์ธ์ค๊ฐ ํ์ํ ์์
์ค์
๋ณด์ ๊ฒฝ๊ณ
์์คํ ์ฌ์ฉ์์๊ฒ๋ ๊ท์น์ด ์ ์ฉ๋์ง ์์ต๋๋ค. ์์คํ ์ฌ์ฉ์๋ก ํจ์๋ฅผ ์คํํ๋ฉด ๋ณด์ ์ฑ ์์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ด ๊ถํ์ด ์๋ ์ฌ์ฉ์์๊ฒ ๋ ธ์ถ๋์ง ์๋๋ก ํ์ธ์.
์๋ฅผ ๋ค์ด, ํจ์ ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ์กํฐ๋ธ ์ฌ์ฉ์๊ฐ ์์คํ ํจ์๋ฅผ ํธ์ถํ ์ ์๋์ง ํ์ธํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ ์ ํ ๊ถํ์ ๊ฐ์ง๊ณ ์๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ์กฐ๊ฑด์ ์ ์ํ ์ ์์ต๋๋ค.
exports = function() { const activeUser = context.user const adminUserId = context.values.get("adminUserId"); if(activeUser.id == adminUserId) { // The user can only execute code here if they're an admin. } else { throw Error("This user is not allowed to execute the system function") } }
์ฌ์ฉ์ ์ธ์
์ฌ์ฉ์ ์ธ์ ์ ์ธ์ฆ๋ ์ฌ์ฉ์๊ฐ ์ฑ๊ณผ ์ํธ ์์ฉํ ์ ์๋ ๊ธฐ๊ฐ์ ๋ํ๋ ๋๋ค. ์ฌ์ฉ์ ์ธ์ ์ ์ฌ์ฉ์๊ฐ SDK๋ฅผ ํตํด ๋ก๊ทธ์ธํ๊ฑฐ๋ HTTPS๋ฅผ ํตํด ์ธ์ฆํ ๋ ์์๋ฉ๋๋ค. SDK ๋๋ API ์์ฒญ์ด ์ธ์ ์ ์๋ก ๊ณ ์น์ง ์๋ ํ ์ธ์ ์ 30๋ถ ํ์ ์ข ๋ฃ๋ฉ๋๋ค.
์ฌ์ฉ์ ์ธ์ ์ ๋ง๋ค๊ณ , ์์ ํ๊ณ , ํด์งํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๋ฉด ์ฌ์ฉ์ ์ธ์ ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์์ฝ
App Services๋ ๋ค์ํ ์ธ์ฆ ์ ๊ณต์ ๋ฅผ ํตํด ์ธ์ฆ ๋ฐ ์ฌ์ฉ์ ๊ณ์ ์ ์ง์ํฉ๋๋ค. ํ ์ฌ์ฉ์๋ ์ฌ๋ฌ ์ธ์ฆ ์ ๊ณต์์ ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค.
App Services๋ ๋ ๋ช ์ด์์ ์ฌ์ฉ์๊ฐ ๋์์ ๋ก๊ทธ์ธํ๋ ๊ฒ์ ์ง์ํฉ๋๋ค. ํ ๋ฒ์ ํ ๋ช ์ ํ์ฑ ์ฌ์ฉ์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์คํ ์ฌ์ฉ์๋ ๋ชจ๋ ๊ท์น์ ์ฐํํ๋ ํน์ ์ฌ์ฉ์์ ๋๋ค.
Realm SDK๋ ์ฌ์ฉ์ ์ธ์ ์ ๊ตฌ์ฑํ๋ ์ก์ธ์ค ๋ฐ ์๋ก ๊ณ ์นจ ํ ํฐ์ ๊ด๋ฆฌํฉ๋๋ค.