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:
'Valtuutus': 'Hallinta <your-api-key>',
'Sisältötyyppi': '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>/Käyttäjät
Vastaus:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"Resurssit": [
{
"active": true,
"id": "8693b7d1-afe8-11f0-8cc2-3a7cb373875a",
"userName": "john@example.com",
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"displayName": "Matti Meikäläinen",
"phoneNumbers": [
{
"primary": true,
"value": "+467017406351",
"type": "työ"
},
{
"primary": false,
"value": "+46313900642",
"type": "mobile"
}
]
}
],
"aloitusindeksi": 1,
"kohteitaSivulla": 20,
"tuloksia yhteensä": 1
}
Listaa kaikki ryhmät
GET <base-url>/Ryhmät
Vastaus:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"Resurssit": [
{
"id": "8e9d1a59-bbe5-11f0-90fb-3e40deb6141c",
"displayName": "Läntinen piirikunta -- kaikki-henkilökunta"
}
],
"startIndex": 1,
"itemsPerPage": 20,
"totalResults": 1
}
Etsi olemassa oleva käyttäjä
GET <base-url>/Käyttäjät?filter=käyttäjäNimi eq "matti@esimerkki.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,
"Resurssit": [
{
"active": true,
"id": "8693b7d1-afe8-11f0-8cc2-3a7cb373875a",
"userName": "john@example.com",
"sähköpostit": [
{
"arvo": "matti@esimerkki.com",
"ensisijainen": true
}
],
"näyttöNimi": "Matti Meikäläinen",
"puhelinnumerot": [
{
"ensisijainen": true,
"arvo": "+46701740635",
"tyyppi": "työ"
},
{
"ensisijainen": 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>/Käyttäjät/8693b7d1-afe8-11f0-8cc2-3a7cb373875a
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "8693b7d1-afe8-11f0-8cc2-3a7cb373875a",
"meta": {
"resourceType": "Käyttäjä",
"location": "/core/v1/scim/v2/Users/8693b7d1-afe8-11f0-8cc2-3a7cb373875a"
},
"userName": "matti@esimerkki.com",
"displayName": "Matti Meikäläinen",
"active": true,
"emails": [
{
"value": "matti@esimerkki.com",
"primary": true
}
],
"phoneNumbers": [
{
"primary": true,
"value": "+46701740635",
"type": "work"
},
{
"ensisijainen": false,
"arvo": "+46313900642",
"tyyppi": "mobiili"
}
]
}
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=ulkoinenId eq "b55a6bbf-fcc1-4d06-943e-896d963b649a"
Vastaus:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"Resurssit": [
{
"id": "19bd0074-9879-11f0-907c-3ec688ae4630",
"externalId": "b55a6bbf-fcc1-4d06-943e-896d963b649a",
"displayName": "Läntinen piirikunta -- kaikki-henkilökunta"
}
],
"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>/Ryhmät/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": "Ryhmä",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "Läntinen piirikunta -- kaikki-henkilökunta",
"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>/Käyttäjät
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"active": true,
"userName": "matti@esimerkki.com",
"displayName": "Matti Meikäläinen",
"title": "Opettaja",
"phoneNumbers": [
{ "primary": true, "type": "työ", "value": "+46701740635" },
{ "primary": false, "type": "mobiili", "value": "+46313900642" }
]
}
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "de11042f-bbb5-11f0-90fb-3e40deb6141c",
"meta": {
"resourceType": "Käyttäjä",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "Matti Meikäläinen",
"title": "Opettaja",
"active": true,
"emails": [
{
"value": "matti@esimerkki.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"arvo": "+46313900642",
"tyyppi": "mobiili",
"ensisijainen": 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
KORJAUS <base-url>/Ryhmät/19bd0074-9879-11f0-907c-3ec688ae4630
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operaatiot": [
{
"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": "Ryhmä",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "Läntinen piirikunta -- vanhempi-henkilöstö",
"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:
KORJAUS <base-url>/Ryhmät/19bd0074-9879-11f0-907c-3ec688ae4630
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operaatiot": [
{
"op": "lisää",
"path": "jäsenet",
"arvo": [
{ "arvo": "5e2612e1-0d52-4261-ba00-46c144bcdf46" },
{ "arvo": "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": "Ryhmä",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "Läntinen piirikunta -- vanhempi-henkilöstö",
"members": [
{ "value": "86954066-afe8-11f0-8cc2-3a7cb373875a" },
{ "value": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "value": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" },
{ "arvo": "5e2612e1-0d52-4261-ba00-46c144bcdf46" },
{ "arvo": "93025edd-af0d-4f04-8883-98d779469c50" }
]
}
Jäsenten poistaminen:
KORJAUS <base-url>/Ryhmät/19bd0074-9879-11f0-907c-3ec688ae4630
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operaatiot": [
{
"op": "poista",
"path": "jäsenet",
"arvo": [
{ "arvo": "86954066-afe8-11f0-8cc2-3a7cb373875a" },
{ "arvo": "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": "Ryhmä",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "Läntinen piirikunta -- vanhempi-henkilöstö",
"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>/Ryhmät/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": "vanhempi-henkilöstö",
"members": [
{ "value": "86954066-afe8-11f0-8cc2-3a7cb373875a" },}
{ "arvo": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "arvo": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" },
{ "arvo": "5e2612e1-0d52-4261-ba00-46c144bcdf46" },
{ "arvo": "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": "Ryhmä",
"location": "/core/v1/scim/v2/Groups/19bd0074-9879-11f0-907c-3ec688ae4630"
},
"displayName": "Läntinen piirikunta -- vanhempi-henkilöstö",
"members": [
{ "value": "86954066-afe8-11f0-8cc2-3a7cb373875a" },
{ "value": "cad12528-b981-11f0-93b9-ca6e7f736f08" },
{ "value": "e6a5a88a-b980-11f0-93b9-ca6e7f736f08" },
{ "arvo": "5e2612e1-0d52-4261-ba00-46c144bcdf46" },
{ "arvo": "93025edd-af0d-4f04-8883-98d779469c50" }
]
}
Päivitä käyttäjän tavalliset määritteet
KORJAUS <base-url>/Käyttäjät/de11042f-bbb5-11f0-90fb-3e40deb6141c
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operaatiot": [
{
"op": "replace",
"path": "displayName",
"value": "Matti Meikäläinen nuorempi."
}
]
}
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "de11042f-bbb5-11f0-90fb-3e40deb6141c",
"meta": {
"resourceType": "Käyttäjä",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "John Doe Jr.",
"title": "Opettaja",
"active": true,
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"arvo": "+46313900642",
"tyyppi": "mobiili",
"ensisijainen": false
}
]
}
Päivitä käyttäjän moniarvoiset määritteet
1. Vaihda puhelinnumerot
KORJAUS <base-url>/Käyttäjät/de11042f-bbb5-11f0-90fb-3e40deb6141c
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operaatiot": [
{
"op": "korvaa",
"path": "puhelinnumerot",
"arvo": [
{ "primary": true, "arvo": "+46701740635" },
{ "primary": false, "arvo": "+46406280473" }
]
}
]
}
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "de11042f-bbb5-11f0-90fb-3e40deb6141c",
"meta": {
"resourceType": "Käyttäjä",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "John Doe Jr.",
"title": "Opettaja",
"active": true,
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"arvo": "+46406280473",
"tyyppi": "mobiili",
"ensisijainen": false
}
]
}
2. Korvaa puhelinnumerot poistamalla
KORJAUS <base-url>/Käyttäjät/de11042f-bbb5-11f0-90fb-3e40deb6141c
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operaatiot": [
{
"op": "korvaa",
"path": "puhelinnumerot",
"arvo": [{ "primary": true, "arvo": "+46701740635" }]
}
]
}
Vastaus:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "de11042f-bbb5-11f0-90fb-3e40deb6141c",
"meta": {
"resourceType": "Käyttäjä",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "John Doe Jr.",
"title": "Opettaja",
"active": true,
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"arvo": "",
"tyyppi": "mobiili",
"ensisijainen": false
}
]
}
3. Entra-yhteensopiva formaatti
API tukee myös Entran lähettämää muotoa:
KORJAUS <base-url>/Käyttäjät/de11042f-bbb5-11f0-90fb-3e40deb6141c
Pyynnön runko:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operaatiot": [
{
"op": "korvaa",
"path": "puhelinnumerot[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": "Käyttäjä",
"location": "/core/v1/scim/v2/Users/de11042f-bbb5-11f0-90fb-3e40deb6141c"
},
"userName": "john@example.com",
"displayName": "John Doe Jr.",
"title": "Opettaja",
"active": true,
"emails": [
{
"value": "john@example.com",
"primary": true
}
],
"phoneNumbers": [
{
"value": "+46701740635",
"type": "work",
"primary": true
},
{
"arvo": "+46980319247",
"tyyppi": "mobiili",
"ensisijainen": false
}
]
}
Poista päätepisteet
Käyttäjän poistaminen
POISTA <base-url>/Käyttäjät/de11042f-bbb5-11f0-90fb-3e40deb6141c
Vastaus:
204 Ei sisältöä
Tämän resurssin myöhemmät GET-pyynnöt ID:n perusteella palauttavat virheen 404 Not Found.
Ryhmän poistaminen
POISTA <base-url>/Ryhmät/19bd0074-9879-11f0-907c-3ec688ae4630
Vastaus:
204 Ei sisältöä
Tämän resurssin myöhemmät GET-pyynnöt ID:n perusteella palauttavat virheen 404 Not Found.