SCIM์„ ์‚ฌ์šฉํ•œ ์‚ฌ์šฉ์ž ๋ฐ ๊ทธ๋ฃน ํ”„๋กœ๋น„์ €๋‹

์ด ์ฐธ์กฐ ๋ฌธ์„œ์— ์žˆ๋Š” ๋‚ด์šฉ

SCIM(System for Cross-domain Identity Management) API ํ‘œ์ค€์„ ์‚ฌ์šฉํ•˜์—ฌ Notion ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ ์‚ฌ์šฉ์ž์™€ ๊ทธ๋ฃน์„ ํ”„๋กœ๋น„์ €๋‹ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜์„ธ์š” ๐Ÿ”‘


์ฐธ๊ณ : ์ด ๊ธฐ๋Šฅ์€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์š”๊ธˆ์ œ ์‚ฌ์šฉ์ž๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Notion์˜ SCIM API๋ฅผ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ํ”„๋กœ๋น„์ €๋‹๊ณผ ๊ด€๋ฆฌ:

  • ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ ๋ฉค๋ฒ„ ์ƒ์„ฑ, ์ œ๊ฑฐ

  • ๋ฉค๋ฒ„์˜ ํ”„๋กœํ•„ ์ •๋ณด ์—…๋ฐ์ดํŠธ

  • ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ ๋ฉค๋ฒ„ ๊ฒ€์ƒ‰

  • ์ด๋ฉ”์ผ ๋˜๋Š” ์ด๋ฆ„์œผ๋กœ ๋ฉค๋ฒ„ ์ฐพ๊ธฐ

๊ทธ๋ฃน ํ”„๋กœ๋น„์ €๋‹๊ณผ ๊ด€๋ฆฌ:

  • ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ ๊ทธ๋ฃน ์ƒ์„ฑ, ์ œ๊ฑฐ

  • ๊ทธ๋ฃน์— ๋ฉค๋ฒ„ ์ถ”๊ฐ€, ์ œ๊ฑฐ

  • ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ ๊ทธ๋ฃน ๊ฒ€์ƒ‰

  • ์ด๋ฆ„์œผ๋กœ ๊ทธ๋ฃน ์ฐพ๊ธฐ

์ฐธ๊ณ : ํ˜„์žฌ๋Š” Notion์˜ SCIM API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ฒŒ์ŠคํŠธ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ Okta, OneLogin, Rippling, ๊ทธ ์™ธ ์‚ฌ์šฉ์ž ์ง€์ • SCIM ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ID ๊ณต๊ธ‰์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์ €ํฌ ์ธก์— ์•Œ๋ ค์ฃผ์„ธ์š”. ํŠน์ • ์•ฑ์— ๋Œ€ํ•œ ID ๊ณต๊ธ‰์ž ์„ค์ •์„ ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด, ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•˜์„ธ์š”. โ†’

Notion์—์„œ SCIM์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์‚ฌ์ „ ์š”๊ฑด

Notion์—์„œ SCIM์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด:

  • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์š”๊ธˆ์ œ ์›Œํฌ์ŠคํŽ˜์ด์Šค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ID ๊ณต๊ธ‰์ž(IdP)๊ฐ€ SAML 2.0 ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ์•ฑ์— ๋Œ€ํ•œ ID ๊ณต๊ธ‰์ž ์„ค์ •์„ ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•˜์„ธ์š”. โ†’

  • ์›Œํฌ์ŠคํŽ˜์ด์Šค ์†Œ์œ ์ž๋Š” Notion ์›Œํฌ์ŠคํŽ˜์ด์Šค์˜ SCIM์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • SCIM์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„์ด๋‚˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ํ•ด๋‹น ์ด๋ฉ”์ผ ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์†Œ์œ ๊ถŒ์ด ํ™•์ธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ ์ธ์ฆ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ โ†’

SCIM API ํ† ํฐ ์ƒ์„ฑ

์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์š”๊ธˆ์ œ ์กฐ์ง ์†Œ์œ ์ž๋งŒ SCIM API ํ† ํฐ์„ ์ƒ์„ฑํ•˜๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SCIM API ํ† ํฐ์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”:

  1. ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ „ํ™˜๊ธฐ๋ฅผ ์—ด๊ณ  ์กฐ์ง ๊ด€๋ฆฌ๋ฅผ ์„ ํƒํ•˜์„ธ์š”. ์•„์ง ์กฐ์ง์„ ์„ค์ •ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋จผ์ € ์กฐ์ง ์„ค์ •์„ ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ here โ†’

  2. ์กฐ์ง ์ˆ˜์ค€ ์ปจํŠธ๋กค์˜ ์ผ๋ฐ˜ ํƒญ์—์„œ SCIM ํ”„๋กœ๋น„์ €๋‹ ์˜†์— ์žˆ๋Š” >๋ฅผ ์„ ํƒํ•˜์„ธ์š”.

์ฐธ๊ณ : SCIM์„ ํ†ตํ•ด ๊ด€๋ฆฌํ•˜๋ ค๋Š” ๊ฐ ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•ด ๋ณ„๋„์˜ SCIM API ํ† ํฐ์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ† ํฐ ์ฒ ํšŒ

์›Œํฌ์ŠคํŽ˜์ด์Šค ์†Œ์œ ์ž๊ฐ€ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ฅผ ๋‚˜๊ฐ€๊ฑฐ๋‚˜ ์—ญํ• ์ด ๋ณ€๊ฒฝ๋˜๋ฉด ํ•ด๋‹น ํ† ํฐ์€ ์ฒ ํšŒ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ๋‚˜๋จธ์ง€ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์†Œ์œ ์ž๋“ค์—๊ฒŒ ์ฒ ํšŒ๋œ ํ† ํฐ์„ ๊ต์ฒดํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ์ž๋™์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

์›Œํฌ์ŠคํŽ˜์ด์Šค ์†Œ์œ ์ž๋Š” ์‚ฌ์šฉ ์ค‘์ธ ํ† ํฐ์„ ์ฒ ํšŒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ† ํฐ์„ ์ฒ ํšŒํ•˜๋ ค๋ฉด ๊ฐ ํ† ํฐ ์˜†์— ์žˆ๋Š” ๐Ÿ—‘๋ฅผ ํด๋ฆญํ•˜์„ธ์š”.

๊ธฐ์กด ํ† ํฐ ๊ต์ฒด

ํ† ํฐ์ด ์ฒ ํšŒ๋œ ๊ฒฝ์šฐ, ๊ธฐ์กด API ํ†ตํ•ฉ์˜ ํ† ํฐ์„ ๊ต์ฒดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฒ ํšŒ๋œ ํ† ํฐ์— ๊ธฐ๋ฐ˜ํ•œ SCIM ํ†ตํ•ฉ์ด๋‚˜ ์‚ฌ์šฉ์ž ํ”„๋กœ๋น„์ €๋‹์€ ์ƒˆ๋กœ์šด ํ† ํฐ์ด ์ ์šฉ๋  ๋•Œ ๊นŒ์ง€ ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ๊ธฐ์กด API ํ†ตํ•ฉ์˜ ์˜ค์ž‘๋™์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ๊ด€๋ฆฌ์ž๋ฅผ ๋””ํ”„๋กœ๋น„์ €๋‹ํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ๊ด€๋ฆฌ์ž๊ฐ€ ์ƒ์„ฑํ•œ ํ† ํฐ์„ ๋จผ์ € ๊ต์ฒดํ•˜์„ธ์š”.

์ดˆ๋Œ€ ์ด๋ฉ”์ผ ํ‘œ์‹œ ์•ˆ ํ•จ

์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์š”๊ธˆ์ œ ์กฐ์ง ์†Œ์œ ์ž๊ฐ€ SCIM์„ ํ†ตํ•ด ํ”„๋กœ๋น„์ €๋‹ํ•  ๋•Œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋ฉ”์ผ๋กœ ์›Œํฌ์ŠคํŽ˜์ด์Šค์™€ ๊ทธ๋ฃน ์ดˆ๋Œ€๋ฅผ ๋ณด๋‚ผ์ง€ ์ œ์–ดํ•˜๋Š” ๋ฐฉ๋ฒ•:

  1. ์›ŒํฌํŽ˜์ด์Šค ์ „ํ™˜๊ธฐ๋ฅผ ์—ด๊ณ  ์กฐ์ง ๊ด€๋ฆฌ๋ฅผ ์„ ํƒํ•˜์„ธ์š”.

  2. ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ง€ ์•Š์œผ๋ ค๋ฉด ์ผ๋ฐ˜ ํƒญ์—์„œ SCIM ํ”„๋กœ๋น„์ €๋‹์—์„œ ์ดˆ๋Œ€ ์ด๋ฉ”์ผ ํ‘œ์‹œ ์•ˆ ํ•จ ํ† ๊ธ€์„ ์ผœ์„ธ์š”.

SCIM์„ ํ†ตํ•œ ์ œํ•œ๋œ ๋ฉค๋ฒ„ ํ”„๋กœ๋น„์ €๋‹

SCIM์„ ํ†ตํ•ด ์ œํ•œ๋œ ๋ฉค๋ฒ„๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜๋ ค๋ฉด SCIM 'role' ์†์„ฑ์„ 'restricted_member'๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"urn:ietf:params:scim:schemas:extension:notion:2.0:User": { role: string // "owner" | "membership_admin" | "member" | "restricted_member" }

SCIM์„ ํ†ตํ•ด ํŽ˜์ด์ง€ ๊ฒŒ์ŠคํŠธ๋ฅผ ์ œํ•œ๋œ ๋ฉค๋ฒ„๋กœ ์ „ํ™˜ํ•˜๋ ค๋ฉด POST /scim/v2/Users๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ํ‘œ๋Š” SCIM ์‚ฌ์šฉ์ž ์†์„ฑ๊ณผ Notion ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ํ•ญ๋ชฉ ๊ฐ„์˜ ๋งคํ•‘์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์กฐ์ง ์†Œ์œ ์ž๋Š” 'Notion์œผ๋กœ ๋ณด๋‚ด๊ธฐ'์— ์‚ฌ์šฉํ•  ์†์„ฑ์„ ์„ ํƒํ•˜๋ฉฐ, ์–ธ์ œ๋“ ์ง€ ํ•ด๋‹น ์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Notion์€ ์‚ฌ์šฉ์ž๊ฐ€ Notion SCIM API๋ฅผ ํ†ตํ•ด ์ „์†กํ•œ ์†์„ฑ์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉ์ž์™€ ๊ทธ๋ฃน์˜ ํ”„๋กœ๋น„์ €๋‹ ๋ฐ ๊ด€๋ฆฌ ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

SCIM ์†์„ฑ

Notion ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ํ•ญ๋ชฉ

์™ธ๋ถ€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค

userName

์ด๋ฉ”์ผ(ํ•„์ˆ˜ ์ž…๋ ฅ ํ•ญ๋ชฉ)

urn:ietf:params:scim:schemas:core:2.0:User

name.formatted

์ด๋ฆ„ (๊ถŒ์žฅ๋˜๋Š” ์ด๋ฆ„ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. Notion์—๋Š” ํ•˜๋‚˜์˜ ์ด๋ฆ„ ํ•ญ๋ชฉ๋งŒ ์žˆ์œผ๋ฏ€๋กœ Okta์—์„œ ๋ชจ๋“  ์ด๋ฆ„ ํ•ญ๋ชฉ์„ ๊ฒฐํ•ฉํ•œ ํ˜•ํƒœ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

urn:ietf:params:scim:schemas:core:2.0:User

name.familyName

์ด๋ฆ„(name.formatted ๋Œ€์‹  name.givenName๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ)

urn:ietf:params:scim:schemas:core:2.0:User

name.givenName

์ด๋ฆ„(name.formatted ๋Œ€์‹  name.familyName๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ)

urn:ietf:params:scim:schemas:core:2.0:User

photos

ํ”„๋กœํ•„ ์‚ฌ์ง„

urn:ietf:params:scim:schemas:core:2.0:User

title

์ œ๋ชฉ

urn:ietf:params:scim:schemas:core:2.0:User

phoneNumbers

์ „ํ™”๋ฒˆํ˜ธ

urn:ietf:params:scim:schemas:core:2.0:User

addresses

์ฃผ์†Œ

urn:ietf:params:scim:schemas:core:2.0:User

roles

์—ญํ• 

urn:ietf:params:scim:schemas:core:2.0:User

locale

์ง€์—ญ

urn:ietf:params:scim:schemas:core:2.0:User

preferredLanguage

์„ ํ˜ธ ์–ธ์–ด

urn:ietf:params:scim:schemas:core:2.0:User

userType

์‚ฌ์šฉ์ž ์œ ํ˜•

urn:ietf:params:scim:schemas:core:2.0:User

emails

์ด๋ฉ”์ผ

urn:ietf:params:scim:schemas:core:2.0:User

active

ํ™œ์„ฑํ™”๋จ

urn:ietf:params:scim:schemas:core:2.0:User

manager.value

๊ด€๋ฆฌ์ž(์ด๋ฉ”์ผ ์ฃผ์†Œ์—ฌ์•ผ ํ•จ)

urn:ietf:params:scim:schemas:extension:enterprise:2.0:User

manager.displayName

๊ด€๋ฆฌ์ž

urn:ietf:params:scim:schemas:extension:enterprise:2.0:User

division

๋ถ€๋ฌธ

urn:ietf:params:scim:schemas:extension:enterprise:2.0:User

department

๋ถ€์„œ

urn:ietf:params:scim:schemas:extension:enterprise:2.0:User

costCenter

๋น„์šฉ ์„ผํ„ฐ

urn:ietf:params:scim:schemas:extension:enterprise:2.0:User

organization

์กฐ์ง

urn:ietf:params:scim:schemas:extension:enterprise:2.0:User

employeeNumber

์ง์› ๋ฒˆํ˜ธ

urn:ietf:params:scim:schemas:extension:enterprise:2.0:User

role

Notion ์ž‘์—… ๊ณต๊ฐ„ ์—ญํ• ("owner" | "membership_admin" | "member")

urn:ietf:params:scim:schemas:extension:notion:2.0:Use

์ฐธ๊ณ  Notion์€ phoneNumbers ํ•ญ๋ชฉ ์ค‘ primary=true์ธ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ๋งŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ํ•ญ๋ชฉ์€ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. type ํ•„๋“œ๋Š” ์™„์ „ํžˆ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. primary๋Š” SCIM 2.0 ์‚ฌ์–‘์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ Notion์€ ์ด๋ฅผ ํ‘œ์ค€๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. primary=true์ธ ํ•ญ๋ชฉ์ด ์—†์œผ๋ฉด ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • GET /Users

    • GET

    • ํŽ˜์ด์ง€๋ฅผ ๋งค๊ธด ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ฉค๋ฒ„ ๋ชฉ๋ก์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

    • startIndexย ์™€ ย countย ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ๋งค๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ย startIndex ๋Š”ย 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฉฐ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋Š” 100์ž…๋‹ˆ๋‹ค.

    • ํ•„ํ„ฐ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„ํ„ฐ๋ง ๊ธฐ์ค€์œผ๋กœ ์œ ํšจํ•œ ์†์„ฑ์€ email, given_name, family_name์ž…๋‹ˆ๋‹ค. ์˜ˆ:ย GET

    • given_name๊ณผ family_name์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฉ”์ผ์€ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

  • GET /Users/

    • GET

    • Notion ์‚ฌ์šฉ์ž ID๋กœ ํŠน์ • ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ฉค๋ฒ„๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ID๋Š” 00000000-0000-0000-0000-000000000000 ํ˜•์‹์˜ 32์ž UUID์ž…๋‹ˆ๋‹ค.

    • meta.created์™€ย meta.lastModified์˜ย ๊ฐ’์€ ์œ ์˜๋ฏธํ•œ ํƒ€์ž„์Šคํƒฌํ”„ ๊ฐ’์ด ์•„๋‹™๋‹ˆ๋‹ค.

  • POST /Users

    • POST

    • ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋ฏธ ๋™์ผํ•œ ์ด๋ฉ”์ผ์„ ์‚ฌ์šฉํ•˜๋Š” Notion ๊ณ„์ •์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ๊ณ„์ •์ด ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

    • ์‚ฌ์šฉ์ž๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ƒˆ Notion ์‚ฌ์šฉ์ž๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒ์„ฑ๋œ Notion ์‚ฌ์šฉ์ž ํ”„๋กœํ•„์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

    • SCIM API๋Š” ์‚ฌ์šฉ์ž ์ƒ์„ฑ ์‹œ ํ”„๋กœํ•„ ์‚ฌ์ง„ ์†์„ฑ์„ ์ฝ์ง€๋งŒ ํ–ฅํ›„ ์—…๋ฐ์ดํŠธ์—์„œ๋Š” ์ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • PATCH /Users/

    • PATCH

    • ์ผ๋ จ์˜ ์ž‘์—…์„ ํ†ตํ•ด ์—…๋ฐ์ดํŠธํ•˜๊ณ , ์—…๋ฐ์ดํŠธ๋œ ์‚ฌ์šฉ์ž ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ๋ฉค๋ฒ„๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฉ”์ผ ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์†Œ์œ ๊ถŒ์ด ์ธ์ฆ๋œ ๊ฒฝ์šฐ์—๋งŒ ๋ฉค๋ฒ„์˜ ํ”„๋กœํ•„ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ Notion์— ๊ตฌ์„ฑํ•œ SAML SSO ์ด๋ฉ”์ผ ๋„๋ฉ”์ธ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋ฅผ ํ†ตํ•ด ๋„๋ฉ”์ธ์„ ์ธ์ฆํ•˜์„ธ์š” โ†’

  • PUT /Users/

    • PUT

    • ์—…๋ฐ์ดํŠธํ•˜๊ณ , ์—…๋ฐ์ดํŠธ๋œ ์‚ฌ์šฉ์ž ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • DELETE /Users/

    • DELETE

    • ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ชจ๋“  ํ™œ์„ฑ ์„ธ์…˜์—์„œ ๋กœ๊ทธ์•„์›ƒ๋ฉ๋‹ˆ๋‹ค.

      • SCIM์œผ๋กœ ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์‚ญ์ œํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ณ„์ • ์‚ญ์ œ๋Š” ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

      • PATCH /Users/ ๋˜๋Š” PUT /Users/ ์š”์ฒญ์„ ๋ณด๋‚ด ํ™œ์„ฑ ์‚ฌ์šฉ์ž ์†์„ฑ์„ false๋กœ ์„ค์ •ํ•ด๋„ ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      • SCIM ๋ด‡ ํ† ํฐ์„ ๋งŒ๋“  ์›Œํฌ์ŠคํŽ˜์ด์Šค ์†Œ์œ ์ž๋Š” API๋ฅผ ํ†ตํ•ด ์ œ๊ฑฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์›Œํฌ์ŠคํŽ˜์ด์Šค ์†Œ์œ ์ž๊ฐ€ SCIM API๋ฅผ ํ†ตํ•ด ์ œ๊ฑฐ๋˜๋ฉด ํ•ด๋‹น ์†Œ์œ ์ž๊ฐ€ ๋งŒ๋“  ๋ชจ๋“  ํ† ํฐ์ด ์ทจ์†Œ๋˜๊ณ  ํ•ด๋‹น ๋ด‡์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  API ํ†ตํ•ฉ์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ๊ธฐ์กด ์‚ฌ์šฉ์ž ์Šคํ‚ค๋งˆ์˜ ํ™•์žฅ ๊ธฐ๋Šฅ์ธ ์—ญํ•  ์†์„ฑ์„ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ˆ˜์ค€์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์–ด์š”. ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์š”.

"urn:ietf:params:scim:schemas:extension:notion:2.0:User": { role: string // "owner" | "membership_admin" | "member" }

  • GET /Groups

    • GET

    • ํŽ˜์ด์ง€๋ฅผ ๋งค๊ธด ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ฉค๋ฒ„ ๋ชฉ๋ก์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

    • startIndex์™€ย countย ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผย ์‚ฌ์šฉํ•˜์—ฌย ํŽ˜์ด์ง€๋ฅผ ๋งค๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. startIndex๋Š”ย 1๋ถ€ํ„ฐย ์‹œ์ž‘ํ•˜๋ฉฐย ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋Š” 100์ž…๋‹ˆ๋‹ค. ์˜ˆ:ย GET

      • ํŽ˜์ด์ง€๋„ค์ด์…˜์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด ํ•œ ๋ฒˆ์˜ ์š”์ฒญ์—์„œ ์ตœ๋Œ€ 100๊ฐœ์˜ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ทธ๋ฃน์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

    • ํ•„ํ„ฐ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฃน์€ displayName ์†์„ฑ์œผ๋กœ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ:ย GET

  • GET /Groups/

    • GET

    • Notion ๊ทธ๋ฃน ID๋กœ ํŠน์ • ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ทธ๋ฃน์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ID๋Š” 00000000-0000-0000-0000-000000000000 ํ˜•์‹์˜ 32์ž UUID์ž…๋‹ˆ๋‹ค.

  • POST /Groups

    • POST

    • ์ƒˆ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ทธ๋ฃน์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • PATCH /Groups/

    • PATCH

    • ์ผ๋ จ์˜ ์ž‘์—…์„ ํ†ตํ•ด ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ทธ๋ฃน์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

  • PUT /Groups/

    • PUT

    • ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ทธ๋ฃน์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

  • DELETE /Groups/

    • DELETE

    • ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ทธ๋ฃน์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ๊ทธ๋ฃน์„ ์‚ญ์ œํ–ˆ์„ ๋•Œ ํ•˜๋‚˜ ์ด์ƒ์˜ ํŽ˜์ด์ง€์— '๋ชจ๋‘ ํ—ˆ์šฉ' ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋ฌด๋„ ์—†๋‹ค๋ฉด, ๊ทธ๋ฃน ์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


ํ”ผ๋“œ๋ฐฑ ๋ณด๋‚ด๊ธฐ

์ด ๋‚ด์šฉ์ด ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?


Powered by Fruition