SCIMã§ã®ãŠãŒã¶ãŒãã°ã«ãŒãã®ããããžã§ãã³ã°
System for Cross-domain Identity ManagementïŒSCIMïŒAPIæšæºèŠæ Œã«ãããNotionã¯ãŒã¯ã¹ããŒã¹ã®ãŠãŒã¶ãŒãã°ã«ãŒãã®ããããžã§ãã³ã°ã管çãã§ããŸã ð
泚ïŒãã®æ©èœã¯ããšã³ã¿ãŒãã©ã€ãºãã©ã³ã®ãŠãŒã¶ãŒã®ã¿ãå©çšã§ããŸãã
Notionã®SCIM APIã䜿çšãããšãæ¬¡ã®æäœãå¯èœã«ãªããŸãïŒ
ãŠãŒã¶ãŒããããžã§ãã³ã°ãšç®¡ç
ã¯ãŒã¯ã¹ããŒã¹ã®ã¡ã³ããŒäœæãåé€
ã¡ã³ããŒã®ãããã£ãŒã«æ å ±æŽæ°
ã¯ãŒã¯ã¹ããŒã¹ã®ã¡ã³ããŒååŸ
ã¡ãŒã«ã¢ãã¬ã¹ãŸãã¯ååã§ã¡ã³ããŒãæ€çŽ¢ããŸãã
ã°ã«ãŒãããããžã§ãã³ã°ãšç®¡ç
ã¯ãŒã¯ã¹ããŒã¹ã®ã°ã«ãŒãäœæãåé€
ã°ã«ãŒãã¡ã³ããŒã®è¿œå ãåé€
ã¯ãŒã¯ã¹ããŒã¹ã®ã°ã«ãŒãååŸ
ååã§ã°ã«ãŒããæ€çŽ¢ããŸãã
泚ïŒçŸæç¹ã§ã¯ãNotionã®SCIM APIã䜿çšããŠã¯ãŒã¯ã¹ããŒã¹ã²ã¹ãã管çããããšã¯ã§ããŸããã
çŸåšãOneLoginãOktaãRipplingãã«ã¹ã¿ã SCIMã¢ããªã±ãŒã·ã§ã³ããµããŒããããŠããŸããä»ã®IDãããã€ãããå©çšã®å Žåã¯ããåãåãããã ãããç¹å®ã®ã¢ããªã®IDãããã€ããŒèšå®ã®æé ã¯ãã¡ã â
Notionã§ã®SCIMã®åææ¡ä»¶
Notionã§SCIMã䜿çšããæ¹æ³ïŒ
ãšã³ã¿ãŒãã©ã€ãºãã©ã³ã®ã¯ãŒã¯ã¹ããŒã¹ã§ããããšã
IDãããã€ããŒïŒIdPïŒãSAML 2.0ãããã³ã«ããµããŒãããŠããããšãç¹å®ã®ã¢ããªã®IDãããã€ããŒèšå®ã®æé ã«ã€ããŠã¯ããã¡ããã芧ãã ãã â
ã¯ãŒã¯ã¹ããŒã¹ãªãŒããŒããNotionã¯ãŒã¯ã¹ããŒã¹ã®SAML SSOãèšå®ããããšã
SCIMã䜿çšããŠãŠãŒã¶ãŒã®ååãŸãã¯ã¡ãŒã«ã¢ãã¬ã¹ã倿Žããå Žåã¯ãã¡ãŒã«ãã¡ã€ã³ã®æææš©ãæ€èšŒæžã¿ã§ããå¿ èŠããããŸãããã¡ã€ã³æ€èšŒã«ã€ããŠè©³ããã¯ãã¡ã â
SCIM APIããŒã¯ã³ã®çæ
ãšã³ã¿ãŒãã©ã€ãºãã©ã³ã®çµç¹ãªãŒããŒã®ã¿ããSCIM APIããŒã¯ã³ãçæããŠè¡šç€ºã§ããŸããSCIM APIããŒã¯ã³ãäœæããã«ã¯ã次ã®ããšãè¡ããŸãã
ã¯ãŒã¯ã¹ããŒã¹åãæ¿ãã¡ãã¥ãŒãéãã
çµç¹ã管çãããéžæããŸãããŸã èšå®ããŠããªãå Žåã¯ããŸãçµç¹ã®èšå®ãè¡ã£ãŠãã ããã詳ããã¯ãã¡ã âçµç¹ã¬ãã«ã®ã³ã³ãããŒã«ã®ã
äžè¬ãã¿ãã§ãSCIMããããžã§ãã³ã°ã®æšªã«ãã>ãéžæããŸãã
åèïŒSCIMãä»ããŠç®¡çããã¯ãŒã¯ã¹ããŒã¹ããšã«ãåå¥ã®SCIM APIããŒã¯ã³ãçæããå¿ èŠããããŸãã
ããŒã¯ã³ã®åãæ¶ã
ã¯ãŒã¯ã¹ããŒã¹ãªãŒããŒãã¯ãŒã¯ã¹ããŒã¹ããéåºããããããŒã«ã倿ŽããããšãããŒã¯ã³ã¯åãæ¶ãããŸãããã®å Žåãã¯ãŒã¯ã¹ããŒã¹ã®æ®ãã®ã¯ãŒã¯ã¹ããŒã¹ãªãŒããŒã«èªåã¡ãã»ãŒãžãéä¿¡ãããåãæ¶ãããããŒã¯ã³ã眮ãæããããã«éç¥ãããŸãã
ããã«ãã¢ã¯ãã£ããªããŒã¯ã³ã¯ãã¯ãŒã¯ã¹ããŒã¹å
ã®ã©ã®ã¯ãŒã¯ã¹ããŒã¹ãªãŒããŒã§ãåãæ¶ãããšãã§ããŸããããŒã¯ã³ãåãæ¶ãã«ã¯ãããããã®ããŒã¯ã³ã®æšªã«ãã ð ãã¯ãªãã¯ããŸãã
æ¢åããŒã¯ã³ã®çœ®ãæã
ããŒã¯ã³ãåãæ¶ãããå Žåã¯ãæ¢åã®ã€ã³ãã°ã¬ãŒã·ã§ã³ã§ããŒã¯ã³ã眮ãæããå¿ èŠããããŸãã
倱å¹ããããŒã¯ã³ã«äŸåããSCIMã€ã³ãã°ã¬ãŒã·ã§ã³ããã³ãŠãŒã¶ãŒããããžã§ãã³ã°ã¯ãæå¹ãªããŒã¯ã³ã«çœ®ãæãããããŸã§äœ¿çšäžå¯ã«ãªããŸãã
åèïŒÂ æ¢åã®ã€ã³ãã°ã¬ãŒã·ã§ã³ã«åœ±é¿ãäžããªãããã«ããã«ã¯ãããããžã§ãã³ã°ãè§£é€ããåã«ã管çè ã«é¢é£ä»ããããŠããããŒã¯ã³ããã¹ãŠçœ®ãæããŠãã ããã
æåŸ ã¡ãŒã«ã®åæ¢
ãšã³ã¿ãŒãã©ã€ãºãã©ã³ã®çµç¹ãªãŒããŒã¯ãSCIMã«ããããããžã§ã³èšå®æã«ãã¯ãŒã¯ã¹ããŒã¹ãã°ã«ãŒããžã®æåŸ ãã¡ãŒã«ã§éä¿¡ãããã©ãããæ¬¡ã®æé ã§ç®¡çã§ããŸãã
ã¯ãŒã¯ã¹ããŒã¹åãæ¿ãã¡ãã¥ãŒãéãã
çµç¹ã管çãããéžæããŸãããŠãŒã¶ãŒã«ã¡ãŒã«ãéä¿¡ããªãå Žåã¯ãã
äžè¬ãã¿ãã§ãã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ã䜿çšããå¿
èŠããããŸãã
GET /ServiceProviderConfigGETå©çšå¯èœãªSCIM仿§ã®æ©èœã®èª¬æãååŸããŸãã
SCIMãããã³ã«ä»æ§ã®ã»ã¯ã·ã§ã³5ã§å®çŸ©ãããŠããŸãã
GET /ResourceTypesGETå©çšå¯èœãªSCIMãªãœãŒã¹ã¿ã€ãã®ãªã¹ããååŸããŸãã
SCIMãããã³ã«ä»æ§ã®ã»ã¯ã·ã§ã³6ã§å®çŸ©ãããŠããŸãã
以äžã®ããŒãã«ã¯ãSCIMãŠãŒã¶ãŒå±æ§ãšNotionãŠãŒã¶ãŒãããã£ãŒã«ãã£ãŒã«ãéã®ãããã³ã°ã®æŠèŠã§ããçµç¹ãªãŒããŒã¯ãNotionã«éä¿¡ãã屿§ãéžæã§ãããã€ã§ããããã®å±æ§ãæŽæ°ã§ããŸããNotionã¯ãNotion SCIM APIãéããŠéä¿¡ããã屿§ãåŠçãããŠãŒã¶ãŒãšã°ã«ãŒãã®ããããžã§ãã³ã°ããã³ç®¡çã®ãšã¯ã¹ããªãšã³ã¹ãåäžãããŸãã
SCIM屿§ | NotionãŠãŒã¶ãŒãããã£ãŒã«ãã£ãŒã«ã | å€éšåå空é |
|---|---|---|
userName | ã¡ãŒã«ã¢ãã¬ã¹ïŒãã®ãã£ãŒã«ãã¯å¿ é ã§ãïŒ |
|
name.formatted | ååïŒæšå¥šãããååãã£ãŒã«ããNotionã«ã¯åäžã®ååãã£ãŒã«ãããããããOktaã§ä»»æã®ååãã£ãŒã«ããçµã¿åãããåŒãäœæã§ããŸããïŒ |
|
name.familyName | ååïŒname.formattedã®ä»£ããã«name.givenNameãšçµã¿åãããŠäœ¿çšã§ããŸããïŒ |
|
name.givenName | ååïŒname.formattedã®ä»£ããã«name.familyNameãšçµã¿åãããŠäœ¿çšã§ããŸããïŒ |
|
photos | ãããã£ãŒã«åç |
|
title | ã¿ã€ãã« |
|
phoneNumbers | é»è©±çªå· |
|
addresses | äœæ |
|
roles | ããŒã« |
|
locale | å°å |
|
preferredLanguage | åžæããèšèª |
|
userType | ãŠãŒã¶ãŒã¿ã€ã |
|
emails | ã¡ãŒã«ã¢ãã¬ã¹ |
|
active | æå¹ |
|
manager.value | ãããŒãžã£ãŒïŒããã¯ã¡ãŒã«ã¢ãã¬ã¹ã§ããå¿ èŠããããŸãïŒ |
|
manager.displayName | ãããŒãžã£ãŒ |
|
division | äºæ¥éš |
|
department | éšçœ² |
|
costCenter | ã³ã¹ãã»ã³ã¿ãŒ |
|
organization | çµç¹ |
|
employeeNumber | åŸæ¥å¡çªå· |
|
role | Notionã¯ãŒã¯ã¹ããŒã¹ã®ããŒã«ïŒãownerã|ãmembership_adminã|ãmemberãïŒ |
|
åè: Notionã¯ãprimary=trueã§ããæåã®phoneNumbersãšã³ããªã®ã¿ãä¿åããŸããä»ã®ãã¹ãŠã®ãšã³ããªã¯ç Žæ£ãããŸããtypeãã£ãŒã«ãã¯å®å
šã«ç¡èŠãããŸããprimaryã¯SCIM 2.0仿§ã®äžéšã§ã¯ãªãããšã«æ³šæããŠãã ãããNotionã¯ãããæšæºãšã¯ç°ãªãæ¹æ³ã§åŠçããŸããprimary=trueã§ãããšã³ããªããªãå Žåãé»è©±çªå·ã¯ä¿åãããŸããã
GET /UsersGETã¯ãŒã¯ã¹ããŒã¹ã¡ã³ããŒã®ããŒãžåå²ããããªã¹ããååŸããŸãã
StartIndex ãšÂcount ãã©ã¡ãŒã¿ãŒã䜿çšããŠãããŒãžçªå·ãä»ããããšãã§ããŸããStartIndexã¯1ããèµ·ç®ãããcountã¯æå€§100ã§ããããšã«ãçæãã ãããfilterãã©ã¡ãŒã¿ãŒã䜿çšããŠãçµæãçµã蟌ãããšãã§ããŸããçµã蟌ã¿ã«æå¹ãªå±æ§ã¯ãemailãgiven_nameãfamily_nameãªã©ã§ããäŸïŒÂGETgiven_nameãšfamily_nameã§ã¯ã倧æåãšå°æåãåºå¥ãããããšã«ãçæãã ãããã¡ãŒã«ã¢ãã¬ã¹ã¯ãå°æåã«å€æãããŸãã
GET /Users/GETNotionã®ãŠãŒã¶ãŒIDã«ãããç¹å®ã®ã¯ãŒã¯ã¹ããŒã¹ã¡ã³ããŒãååŸããŸããããã¯
00000000-0000-0000-0000-000000000000ã®åœ¢åŒã®32æåã®UUIDãšãªããŸããmeta.createdãšmeta.lastModifiedã¯ãæå³ã®ããã¿ã€ã ã¹ã¿ã³ãå€ãåæ ããªãããšã«ãçæãã ããã
POST /UsersPOST远å ããããšããŠãããŠãŒã¶ãŒãæ¢ã«åãã¡ãŒã«ã¢ãã¬ã¹ã§Notionã®ãŠãŒã¶ãŒã¢ã«ãŠã³ããæã£ãŠããå Žåããã®ãŠãŒã¶ãŒã¯ã¯ãŒã¯ã¹ããŒã¹ã«è¿œå ãããŸãã
ãŠãŒã¶ãŒãååšããªãå Žåã«ãããåŒã³åºããšãæ°ããNotionãŠãŒã¶ãŒãäœæãããäœæããããŠãŒã¶ãŒãã¯ãŒã¯ã¹ããŒã¹ã«è¿œå ãããŸããäœæãããNotionãŠãŒã¶ãŒãããã£ãŒã«ã«ãããã³ã°ãããŸãã
SCIM APIã¯ããŠãŒã¶ãŒã®äœææã«ãããã£ãŒã«åçã®ããããã£ãèªã¿åããŸãããä»åŸã®æŽæ°ã§ã¯èªã¿åããŸããã
PATCH /Users/PATCHããã€ãã®æäœãå®è¡ããŠæŽæ°ããæŽæ°ããããŠãŒã¶ãŒã¬ã³ãŒããè¿ããŸãã
åèïŒ ãŠãŒã¶ãŒã®ã¡ãŒã«ãã¡ã€ã³ïŒéåžžãNotionãžã®SAMLã·ã³ã°ã«ãµã€ã³ãªã³çšã«èšå®ããã¡ãŒã«ãã¡ã€ã³ãšåãïŒã®æææš©ãæ€èšŒãããŠããå Žåã®ã¿ãã¡ã³ããŒã®ãããã£ãŒã«æ å ±ãæŽæ°ã§ããŸãããã¡ã€ã³ãæ€èšŒã¯ãã¡ãã®æé ã«æ²¿ã£ãŠå®æœããŠãã ãã â
PUT /Users/PUTæŽæ°ããæŽæ°ããããŠãŒã¶ãŒã¬ã³ãŒããè¿ããŸãã
DELETE /Users/DELETEã¯ãŒã¯ã¹ããŒã¹ãããŠãŒã¶ãŒãåé€ããŸãããŠãŒã¶ãŒã¯ãã¢ã¯ãã£ããªã»ãã·ã§ã³ãã¹ãŠãããã°ã¢ãŠããããŸãã
ãŠãŒã¶ãŒã¢ã«ãŠã³ãèªäœã¯ãSCIMãéããŠåé€ã§ããŸãããã¢ã«ãŠã³ãã®åé€ã¯æåã§è¡ã£ãŠãã ããã
PATCH /Users/ãŸãã¯PUT /Users/ãªã¯ãšã¹ããéä¿¡ããŠãã¢ã¯ãã£ããªãŠãŒã¶ãŒå±æ§ãfalseã«èšå®ããããšã§ãã¯ãŒã¯ã¹ããŒã¹ãããŠãŒã¶ãŒãåé€ããããšãã§ããŸããSCIMãããããŒã¯ã³ãäœæããã¯ãŒã¯ã¹ããŒã¹ãªãŒããŒã¯ãAPIãä»ããŠåé€ããããšã¯ã§ããŸãããSCIM APIãä»ããŠã¯ãŒã¯ã¹ããŒã¹ãªãŒããŒãåé€ããããšããã®ã¯ãŒã¯ã¹ããŒã¹ãªãŒããŒãäœæããããŒã¯ã³ã¯ãã¹ãŠåãæ¶ããããã®ãããã䜿çšããã€ã³ãã°ã¬ãŒã·ã§ã³ããã¹ãŠæ©èœããªããªããŸãã
åèïŒ æ¢åã®ãŠãŒã¶ãŒã¹ããŒãã®æ¡åŒµæ©èœã§ãã ããŒã« ã®å±æ§ã䜿çšããããšã§ãã¯ãŒã¯ã¹ããŒã¹ã¬ãã«ã ãŠãŒã¶ãŒ ã«å²ãåœãŠãããšãã§ããŸãã圢åŒã¯ä»¥äžã®éãã§ãã
"urn:ietf:params:scim:schemas:extension:notion:2.0:User": { role: string // "owner" | "membership_admin" | "member" }
GET /GroupsGETã¯ãŒã¯ã¹ããŒã¹ã°ã«ãŒãã®ããŒãžåå²ããããªã¹ããååŸããŸãã
startIndexãšcountãã©ã¡ãŒã¿ãŒã䜿çšããŠãããŒãžåå²ãã§ããŸããstartIndex ã¯1ããèµ·ç®ãããããšããŸãcountã¯æå€§100ã§ããããšã«ãçæãã ãããäŸïŒ  GETããŒãžåå²ã䜿çšããªãå Žåã¯ããªã¯ãšã¹ããããæå€§100ã®ã¯ãŒã¯ã¹ããŒã¹ã°ã«ãŒããè¿ãããŸãã
filterãã©ã¡ãŒã¿ãŒã䜿çšããŠãçµæãçµã蟌ãããšãã§ããŸããã°ã«ãŒãã¯ãdisplayName屿§ã§çµã蟌ã¿ã§ããŸããäŸïŒÂGET
GET /Groups/GETNotionã®ã°ã«ãŒãIDã«ãããç¹å®ã®ã¯ãŒã¯ã¹ããŒã¹ã°ã«ãŒããååŸããŸããããã¯
00000000-0000-0000-0000-000000000000ã®åœ¢åŒã®32æåã®UUIDãšãªããŸãã
POST /GroupsPOSTæ°ããã¯ãŒã¯ã¹ããŒã¹ã°ã«ãŒããäœæããŸãã
PATCH /Groups/PATCHããã€ãã®æäœãå®è¡ããŠã¯ãŒã¯ã¹ããŒã¹ã°ã«ãŒããæŽæ°ããŸãã
PUT /Groups/PUTã¯ãŒã¯ã¹ããŒã¹ã°ã«ãŒããæŽæ°ããŸãã
DELETE /Groups/DELETEã¯ãŒã¯ã¹ããŒã¹ã°ã«ãŒããåé€ããŸãã
åèïŒ ããŒãžãžã®ãã«ã¢ã¯ã»ã¹æš©ãæã€ãŠãŒã¶ãŒãããªããªãå Žåã¯ãã°ã«ãŒããåé€ã§ããŸããã
詳ããã¯ãã¡ã
