Esimerkkejä SCIM-pyyntöjen lähettämisestä
Tässä artikkelissa on esimerkkejä API:n tukemista SCIM-päätepistepyynnöistä. Identiteettipalveluntarjoajasi (IdP) käsittelee nämä pyynnöt yleensä automaattisesti, joten manuaalinen toiminta on yleensä tarpeetonta.
Käytä näitä esimerkkejä vain, jos olet rakentamassa mukautettua yhdistintä ja sinun on testattava sitä SCIM API:a vasten. Mukautetut liittimet voivat tuottaa epävakaita tai arvaamattomia tuloksia, jos ne toimivat odottamatta, joten emme yleensä suosittele niiden kirjoittamista alusta alkaen. Jos tilanteesi kuitenkin vaatii manuaalista integrointia etkä voi käyttää valmiiksi rakennettua kolmannen osapuolen yhdistintä, katso ohjeita näistä esimerkeistä.
Perus-URL
Käytä SCIM-lisäosan aktivoinnin aikana annettua perus-URL-osoitetta. Tämän dokumentin esimerkeissä tähän viitataan muodossa <base-url>.
Ylätunnisteet
Kaikkien pyyntöjen on sisällettävä seuraavat otsikot:
'Authorization': 'Bearer <your-api-key>',
'Content-Type': 'application/scim+json; charset=utf-8',
Yksinkertaisuuden vuoksi seuraavat esimerkit näyttävät vain URL-osoitteen ja pyynnön rungon.
Rajoitukset
- Sivutusten enimmäismäärä: 1000
- Pyynnön
members-attribuutin enimmäispituus: 1000 - GET
filtertukee yhtä attribuuttia vaineq(equal) -operaatiolla
Lue päätepisteitä
Listaa kaikki käyttäjät
GET <base-url>/Users
Vastaus:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"Resources": [
{
"active": true,
"id": "8693b7d1-afe8-11f0-8cc2-3a7cb373875a",
"userName": "john@example.com",
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"displayName": "John Doe",
"phoneNumbers": [
{
"primary": true,
"value": "+467017406351",
"type": "work"
},
{
"primary": false,
"value": "+46313900642",
"type": "mobile"
}
]
}
],
"startIndex": 1,
"itemsPerPage": 20,
"totalResults": 1
}
Listaa kaikki ryhmät
GET <base-url>/Groups
Vastaus:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"Resources": [
{
"id": "8e9d1a59-bbe5-11f0-90fb-3e40deb6141c",
"displayName": "West county -- all-staff"
}
],
"startIndex": 1,
"itemsPerPage": 20,
"totalResults": 1
}
Etsi olemassa oleva käyttäjä
GET <base-url>/Users?filter=userName eq "john@example.com"
Tarkistaaksesi, onko käyttäjä jo järjestelmässä, ja hakeaksesi hänen id-tietonsa myöhempiä pyyntöjä varten, käytä filter-parametria ja vastaavaa userName-attribuuttia käyttäjän löytämiseksi hänen yksilöllisen nimensä perusteella.
Jos käyttäjä on olemassa, päätepiste palauttaa käyttäjäskeeman, joka sisältää id-attribuutin, jota käytetään kaikissa tämän käyttäjän myöhemmissä pyynnöissä:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"startIndex": 1,
"itemsPerPage": 20,
"totalResults": 1,
"Resources": [
{
"active": true,
"id": "8693b7d1-afe8-11f0-8cc2-3a7cb373875a",
"userName": "john@example.com",
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"displayName": "John Doe",
"phoneNumbers": [
{
"primary": true,
"value": "+46701740635",
"type": "work"
},
{
"primary": false,
"value": "+46313900642",
"type": "mobile"
}
]
}
]
}
Jos käyttäjää ei ole olemassa, päätepiste palauttaa arvon 200 OK tyhjällä listalla.
Hanki käyttäjä
Hae olemassa oleva käyttäjä tekemällä GET-pyyntö /Users-päätepisteeseen käyttäjän id-arvolla.
GET <base-url>/Users/8693b7d1-afe8-11f0-8cc2-3a7cb373875a
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "8693b7d1-afe8-11f0-8cc2-3a7cb373875a",
"meta": {
"resourceType": "User",
"location": "/core/v1/scim/v2/Users/8693b7d1-afe8-11f0-8cc2-3a7cb373875a"
},
"userName": "john@example.com",
"displayName": "John Doe",
"active": true,
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"phoneNumbers": [
{
"primary": true,
"value": "+46701740635",
"type": "work"
},
{
"primary": false,
"value": "+46313900642",
"type": "mobile"
}
]
}
Käytä tätä päätepistettä varmistaaksesi, että käyttäjä on edelleen järjestelmässä, tai tarkistaaksesi yhteensopimattomat määritteet.
Etsi olemassa oleva ryhmä
Käytä externalId-attribuuttia ryhmän etsimiseen. Ohjeet Ryhmätunnus-kentän määrittämiseen hallintapaneelissa ovat kohdassa Ryhmien määrittäminen.
GET <base-url>/Groups?filter=externalId eq "b55a6bbf-fcc1-4d06-943e-896d963b649a"
Vastaus:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"Resources": [
{
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"displayName": "West county -- all-staff"
}
],
"startIndex": 1,
"itemsPerPage": 20,
"totalResults": 1
}
Tärkeitä huomioitavia asioita:
- Jos tämä päätepiste palauttaa arvon
"totalResults": 2(tai minkä tahansa arvon, joka on suurempi kuin 1), liittämistä pidetään epäonnistuneena äläkä yritä käyttää luettelon ensimmäistä elementtiä vastaavana käyttäjänä. - Jos ryhmää ei löydy, luo ryhmä Cosafe-hallintapaneelista ja aseta ryhmän tunnus sisäiseksi järjestelmätunnukseksesi. Tästä kentästä tulee
externalId-attribuutti. Members-attribuuttia ei ole sisällytetty tähän luetteloon. Jäsenten hakemiseen käytä get a group endpoint -metodia.- Jos vastaus ei sisällä
externalId-attribuuttia, ryhmän tunnusta ei ole määritetty oikein hallintapaneelissa. Katso Ryhmien määrittäminen.
Hanki ryhmä
Hae olemassa oleva ryhmä tekemällä GET-pyyntö /Groups-päätepisteeseen ryhmän id-määritteellä.
GET <base-url>/Groups/19bd0074-9879-11f0-907c-3ec688ae4630
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"meta": {
"resourceType": "Group",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "West county -- all-staff",
"members": [
{ "value": "86954066-afe8-11f0-8cc2-3a7cb373875a" },
{ "value": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "value": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" }
]
}
members-attribuutti sisältää luettelon kyseiseen ryhmään kuuluvista käyttäjätunnuksista (id) value-arvona.
Ryhmän nimessä etuliite "West County" ei ole osa ryhmän nimeä. Se on sen alatilin nimi, johon ryhmä kuuluu. Tämä etuliite lisätään IdP:ille, joiden on erotettava palautetut ryhmät niiden displayName-attribuutin perusteella, koska eri alatileillä on usein identtisen nimen omaavia ryhmiä.
Luo päätepisteitä
Luo käyttäjä
POST <base-url>/Users
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"active": true,
"userName": "john@example.com",
"displayName": "John Doe",
"title": "Teacher",
"phoneNumbers": [
{ "primary": true, "type": "work", "value": "+46701740635" },
{ "primary": false, "type": "mobile", "value": "+46313900642" }
]
}
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "de11042f-bbb5-11f0-90fb-3e40deb6141c",
"meta": {
"resourceType": "User",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "John Doe",
"title": "Teacher",
"active": true,
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"value": "+46313900642",
"type": "mobile",
"primary": false
}
]
}
Vastaus sisältää id-attribuutin, jota käytät kaikissa tämän käyttäjän myöhemmissä pyynnöissä.
Luo ryhmä
Luodaksesi ryhmän, luo se Cosafe-hallintapaneelissa ja aseta ryhmän tunnus sisäiseksi järjestelmätunnukseksi, josta tulee externalId.
Päivitä päätepisteitä
Suositeltava tapa muokata resurssia on käyttää PATCH-pyyntöä, jossa on operaatio attribuutille.
Ryhmän päivittäminen
PATCH <base-url>/Groups/19bd0074-9879-11f0-907c-3ec688ae4630
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{
"op": "replace",
"path": "displayName",
"value": "senior-staff"
}
]
}
PATCH-operaatiopyyntö voi sisältää useita toimintoja.
Tämä pyyntö korvaa "all-staff"-sanan "senior-staff"-sanalla.
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"meta": {
"resourceType": "Group",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "West county -- senior-staff",
"members": [
{ "value": "86954066-afe8-11f0-8cc2-3a7cb373875a" },
{ "value": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "value": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" }
]
}
Päivitä ryhmän jäsenet
Voit päivittää ryhmän jäseniä kahdella tavalla:
1. Osittainen päivitys (lisää tai poista tiettyjä käyttäjiä)
Jäsenten lisääminen:
PATCH <base-url>/Groups/19bd0074-9879-11f0-907c-3ec688ae4630
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{
"op": "add",
"path": "members",
"value": [
{ "value": "5e2612e1-0d52-4261-ba00-46c144bcdf46" },
{ "value": "93025edd-af0d-4f04-8883-98d779469c50" }
]
}
]
}
Elementti value on käyttäjän id.
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"meta": {
"resourceType": "Group",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "West county -- senior-staff",
"members": [
{ "value": "86954066-afe8-11f0-8cc2-3a7cb373875a" },
{ "value": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "value": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" },
{ "value": "5e2612e1-0d52-4261-ba00-46c144bcdf46" },
{ "value": "93025edd-af0d-4f04-8883-98d779469c50" }
]
}
Jäsenten poistaminen:
PATCH <base-url>/Groups/19bd0074-9879-11f0-907c-3ec688ae4630
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{
"op": "remove",
"path": "members",
"value": [
{ "value": "86954066-afe8-11f0-8cc2-3a7cb373875a" },
{ "value": "93025edd-af0d-4f04-8883-98d779469c50" }
]
}
]
}
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"meta": {
"resourceType": "Group",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "West county -- senior-staff",
"members": [
{ "value": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "value": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" },
{ "value": "5e2612e1-0d52-4261-ba00-46c144bcdf46" }
]
}
2. Korvaa koko jäsentaulukko
Jos haluat mieluummin korvata koko members-taulukon, käytä PUT-pyyntöä.
Huomautus: Tätä lähestymistapaa ei suositella ryhmille, joissa on paljon jäseniä. Suorituskyvyn vuoksi käytä osittaisia päivityksiä lisää/poista-toimintojen kautta vain muuttuneille jäsenyyksille, myös ryhmän alkutäytön aikana.
PUT <base-url>/Groups/19bd0074-9879-11f0-907c-3ec688ae4630
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"displayName": "senior-staff",
"members": [
{ "value": "86954066-afe8-11f0-8cc2-3a7cb373875a" },
{ "value": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "value": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" },
{ "value": "5e2612e1-0d52-4261-ba00-46c144bcdf46" },
{ "value": "93025edd-af0d-4f04-8883-98d779469c50" }
]
}
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"meta": {
"resourceType": "Group",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "West county -- senior-staff",
"members": [
{ "value": "86954066-afe8-11f0-8cc2-3a7cb373875a" },
{ "value": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "value": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" },
{ "value": "5e2612e1-0d52-4261-ba00-46c144bcdf46" },
{ "value": "93025edd-af0d-4f04-8883-98d779469c50" }
]
}
Päivitä käyttäjän tavalliset määritteet
PATCH <base-url>/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{
"op": "replace",
"path": "displayName",
"value": "John Doe Jr."
}
]
}
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "de11042f-bbb5-11f0-90fb-3e40deb6141c",
"meta": {
"resourceType": "User",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "John Doe Jr.",
"title": "Teacher",
"active": true,
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"value": "+46313900642",
"type": "mobile",
"primary": false
}
]
}
Päivitä käyttäjän moniarvoiset määritteet
1. Vaihda puhelinnumerot
PATCH <base-url>/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{
"op": "replace",
"path": "phoneNumbers",
"value": [
{ "primary": true, "value": "+46701740635" },
{ "primary": false, "value": "+46406280473" }
]
}
]
}
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "de11042f-bbb5-11f0-90fb-3e40deb6141c",
"meta": {
"resourceType": "User",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "John Doe Jr.",
"title": "Teacher",
"active": true,
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"value": "+46406280473",
"type": "mobile",
"primary": false
}
]
}
2. Korvaa puhelinnumerot poistamalla
PATCH <base-url>/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{
"op": "replace",
"path": "phoneNumbers",
"value": [{ "primary": true, "value": "+46701740635" }]
}
]
}
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "de11042f-bbb5-11f0-90fb-3e40deb6141c",
"meta": {
"resourceType": "User",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "John Doe Jr.",
"title": "Teacher",
"active": true,
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"value": "",
"type": "mobile",
"primary": false
}
]
}
3. Entra-yhteensopiva formaatti
API tukee myös Entran lähettämää muotoa:
PATCH <base-url>/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{
"op": "replace",
"path": "phoneNumbers[type eq \"mobile\"].value",
"value": "+46980319247"
}
]
}
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "de11042f-bbb5-11f0-90fb-3e40deb6141c",
"meta": {
"resourceType": "User",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "John Doe Jr.",
"title": "Teacher",
"active": true,
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"value": "+46980319247",
"type": "mobile",
"primary": false
}
]
}
Poista päätepisteet
Käyttäjän poistaminen
DELETE <base-url>/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c
Vastaus:
204 No Content
Tämän resurssin myöhemmät GET-pyynnöt ID:n perusteella palauttavat virheen 404 Not Found.
Ryhmän poistaminen
DELETE <base-url>/Groups/19bd0074-9879-11f0-907c-3ec688ae4630
Vastaus:
204 No Content
Tämän resurssin myöhemmät GET-pyynnöt ID:n perusteella palauttavat virheen 404 Not Found.