SCIM-Operationen in Liberty Profile
Die SCIM 1.1-Spezifikationen (System for Cross-domain Identity Management) werden in Liberty unterstützt.
Ressourcen abrufen
WebSphere Application Server Liberty unterstützt SCIM 1.1-Spezifikationen. Weitere Informationen zu den Spezifikationen finden Sie unter http://www.simplecloud.info/.
Zum Abrufen einer bekannten Ressource müssen Sie eine GET-Anforderung an den konfigurierten HTTP-Endpunkt senden, z. B. /Users/{id} oder /Groups/{id}.
<ldapRegistry id="LDAP1" realm="SampleLdapIDSRealm" host="9.127.1.90" port="1389" ignoreCase="true"
baseDN="o=ibm,c=us" ldapType="IBM Tivoli Directory Server" searchTimeout="8m" recursiveSearch="true"
bindDN="xxxxxx" bindPassword="xxxxxxx">
<ldapEntityType name="PersonAccount">
<rdnProperty name="uid" objectClass="inetOrgPerson"/>
<objectClass>inetOrgPerson</objectClass>
</ldapEntityType>
<ldapEntityType name="Group">
<objectClass>groupofnames</objectClass>
<objectClass>ibm-nestedGroup</objectClass>
<rdnProperty name="cn" objectClass="groupofnames"/>
</ldapEntityType>
<attributeConfiguration>
<attribute name="title" propertyName="honorificPrefix" syntax="String" entityType="PersonAccount">
</attribute>
<attribute name="initials" propertyName="middleName" syntax="String" entityType="PersonAccount">
</attribute>
<attribute name="st" propertyName="honorificSuffix" syntax="String" entityType="PersonAccount">
</attribute>
<attribute name="l" propertyName="homeStateOrProvinceName" syntax="String" entityType="PersonAccount">
</attribute>
<attribute name="street" propertyName="homeStreet" syntax="String" entityType="PersonAccount">
</attribute>
<attribute name="postalAddress" propertyName="homeCity" syntax="String" entityType="PersonAccount">
</attribute>
<attribute name="postalCode" propertyName="homePostalCode" syntax="String" entityType="PersonAccount">
</attribute>
<attribute name="postOfficeBox" propertyName="homeCountryName" syntax="String" entityType="PersonAccount">
</attribute>
<attribute name="departmentNumber" propertyName="photoURLThumbnail" syntax="String" entityType="PersonAccount">
</attribute>
<attribute name="description" propertyName="photoURL" syntax="String" entityType="PersonAccount">
</attribute>
</attributeConfiguration>
<groupProperties>
<memberAttribute name="member" dummyMember="uid=dummy" objectClass="groupOfNames" scope="direct"/>
<memberAttribute name="ibm-memberGroup" objectClass="ibm-nestedGroup" scope="direct"/>
</groupProperties>
</ldapRegistry>
Zum Abrufen einer Ressource
aus der LDAP-Registry müssen Sie eine GET-Anforderung im Format https://localhost:9090/ibm/api/scim/Users/uid=jsmith,o=ibm,c=us senden.
Ressourcen abfragen
- Parameter zum Abrufen eines Teils der Werte angeben: https://localhost:9090/ibm/api/scim/Users?filter=givenname sw "Jo" ruft beispielsweise alle Benutzer ab, deren Name mit “Jo” beginnt.
- Attributparameter zum Abrufen eines Teils der Werte angeben: https://localhost:9090/ibm/api/scim/Users?filter=givenname sw "Jo"&attributes=username,emails&filter=name.familyname eq "Smith" ruft beispielsweise die E-Mail-Adressen von Benutzern ab, deren Name mit “Jo” beginnt und deren Nachname “Smith” ist.
- Paging- und Sortierparameter zum Abrufen organisierter Ressourcen angeben: https://localhost:9090/ibm/api/scim/Users?filter=givenname sw "Jo"&attributes=username&sortBy=username&startIndex=3&count=5 ruft beispielsweise die dritte Seite der sortierten Ergebnisse ab, wobei jede Seite fünf Namen von Benutzern enthält, deren Name mit “Jo” beginnt und deren Nachname “Smith” ist.
- Die zugrunde liegenden eingebundenen Repositorys bestimmen, ob für die in den Filtern angegebenen Werte die Groß-/Kleinschreibung beachtet werden muss. Bei der Verwendung von LDAP muss die Groß-/Kleinschreibung für die Werte standardmäßig nur beachtet werden, wenn das Attribut einem LDAP-Attribut zugeordnet ist, für das die Groß-/Kleinschreibung beachtet werden muss.
- Der Benutzername kann nicht im Suchfilter verwendet werden.
- Beim Einbinden von Basisregistrys, SAF-Registrys oder angepassten Registrys, die die SCIM-Attribute nicht unterstützen, wird mit dem Filtermuster immer nach dem Benutzernamen gesucht und es wird nur das Benutzernamensattribut zurückgegeben.
Ressourcen erstellen
Content-Type: application/json
Content-Length: ...
{
"schemas":["urn:scim:schemas:core:1.0"],
"userName":"bjensen",
"externalId": "uid=bjensen,o=ibm,c=us",
"name":{
"familyName":"Jensen",
"givenName":"Barbara"
}
}
Die Anforderung muss alle Attribute enthalten, die für die erfolgreiche Erstellung eines Benutzers (User) oder einer Gruppe (Group) in der Benutzerregistry erforderlich sind. In einer Tivoli Directory Server-Back-End-LDAP-Registry sind beispielsweise mindestens die folgenden LDAP-Attribute zum Erstellen eines Benutzers erforderlich: uid, sn und cn. Daher muss jede Anforderung zum Erstellen eines Benutzers userName, givenName und familyName enthalten. Die Erstellungsoperation schlägt fehl, wenn das Schema der Benutzerregistry nicht eingehalten wird.
Das Attribut "externalId" fungiert als ID und muss angegeben werden. Das Attributformat richtet sich nach der Spezifikation der Back-End-Benutzerregistry. Im obigen Beispiel ist die Back-End-Registry eine LDAP-Registry mit dem Basiseintrag (baseEntry) o=ibm,c=us und die RDN-Eigenschaft für den Benutzer ist als UID definiert. Deswegen ist die externe ID (externalId) uid=bjensen,o=ibm,c=us.
{
"schemas":["urn:scim:schemas:core:1.0"],
"id":"uid=bjensen,o=ibm,c=us",
"userName":"bjensen",
"externalId":"uid=bjensen,o=ibm,c=us",
"name":{
"formatted":"Barbara Jensen",
"familyName":"Jensen",
"givenName":"Barbara"
},
"meta":{
"lastModified":"2015-09-15T14:30:11", "location":"https:\\localhost:9090\ibm\api\scim\Users\uid=bjensen,o=ibm,c=us",
"created":"2015-09-15T14:30:11"
}
}
<federatedRepository>
<primaryRealm name="WIMRegistry">
<participatingBaseEntry name="o=ibm,c=us"/>
<participatingBaseEntry name="o=ldap"/>
</primaryRealm>
<supportedEntityType>
<defaultParent>o=ldap</defaultParent>
<name>PersonAccount</name>
</supportedEntityType>
</federatedRepository>
Ressourcen ändern
Content-Type: application/json
Content-Length: ...
{
"schemas":["urn:scim:schemas:core:1.0"],
"userName":"bjensen",
"externalId":"uid=bjensen,o=ibm,c=us",
"name":{
"familyName":"Jensen",
"givenName":"Barb"
}
}
Diese Anforderung ändert den Vornamen des Objekts von Barbara in
Barb. Die in der URL angegebene ID muss der im Benutzerobjekt angegebenen externen ID
(externalId) entsprechen. Content-Type: application/json
Content-Length: ...
{
"id":"cn=employeeGroup,o=ibm,c=us",
"schemas":["urn:scim:schemas:core:1.0"],
"displayName":"employeeGroup",
"externalId":"cn=employeeGroup,o=ibm,c=us",
"members":[{"value":"uid=bjensen,o=ibm,c=us", "type":"User"},{"value":"cn=consultants,o=ibm,c=us", "type":"Group"}]
}
Content-Type: application/json
Content-Length: ...
{
"id":"cn=employeeGroup,o=ibm,c=us",
"schemas":["urn:scim:schemas:core:1.0"],
"displayName":"employeeGroup",
"externalId":"cn=employeeGroup,o=ibm,c=us",
"members":[]
}