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}.

Das folgende Beispiel zeigt die Ausführung der Operationen für eine LDAP-Registry.
    <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

Zum Abfragen von Ressourcen müssen Sie eine GET-Anforderung an den konfigurierten HTTP-Endpunkt senden und den Filter für die Suche angeben. Sie können auch den Attributparameter angeben, damit ein Teil der Werte der zurückgegebenen Ressourcen zurückgegeben wird, und Sie können Paging- und Sortierparameter angeben, um die zurückgegebenen Ressourcen zu organisieren. Die folgenden Beispiele zeigen einige der Filteroptionen:
  • 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.
Anmerkungen:
  • 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

Zum Erstellen neuer Ressourcen müssen Sie eine POST-Anforderung an den Ressourcenendpunkt senden, d. h. Users oder Groups. Im POST-Inhalt muss das json-Benutzerobjekt vorhanden sein und der HTTP-Header-Inhaltstyp muss auf application/json gesetzt sein.
Anmerkung: Der Inhaltstyp application/xml wird nicht unterstützt.
Zum Erstellen eines Benutzers muss die folgende Anforderung an https://localhost:9090/ibm/api/scim/Users Content-Type gesendet werden:
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.

Das erstellte Benutzerobjekt wird basierend auf der Erstellungsanforderung zurückgegeben.
{
    "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"
    }
}
Wenn mehrere LDAPs konfiguriert sind und eine Erstellungsoperation aufgerufen werden muss, muss für die Entität ein übergeordnetes Standardelement definiert werden. Das definierte übergeordnete Element gibt den Basiseintrag an, unter dem die neue Entität erstellt wird. Das folgende Beispiel zeigt die Konfiguration eines übergeordneten Standardelements für PersonAccount.
<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

Zum Ändern von Ressourcen muss eine PUT-Anforderung an den Ressourcenendpunkt gesendet werden, d. h. /Users oder /Groups. Eine PUT-Anforderung führt eine vollständige Aktualisierung der Ressource durch. Alle Attribute, die nicht in der Eingabe enthalten sind, werden gelöscht.
Anmerkung: Teilweise Aktualisierungen mit PATCH werden nicht unterstützt.
Zum Ändern der zuvor erstellten Ressource muss die folgende Anforderung an https://localhost:9090/ibm/api/scim/Users/uid=bjensen,o=ibm,c=us gesendet werden:
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.
Zum Ändern der Gruppe cn=employeeGroup,o=ibm,c=us und zum Ändern der Gruppenzugehörigkeit muss das Memberattribut angegeben werden.
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"}]
}
Zum Ändern der Gruppe cn=employeeGroup,o=ibm,c=us und Entfernen aller Member aus einer Gruppe, muss ein leeres Memberattribut angegeben werden.
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":[]
}

Ressourcen löschen

Zum Löschen von Ressourcen müssen Sie eine Löschanforderung (DELETE) an den Ressourcenendpunkt senden, d. h. /Users oder /Groups. Wenn Sie beispielsweise den Benutzer uid=bjensen,o=ibm,c=us, der im vorherigen Beispiel erstellt wurde, löschen möchten, senden Sie eine Anforderung an https://localhost:9090/ibm/api/scim/Users/uid=bjensen,o=ibm,c=us.
Anmerkung: SCIM kann nur in Java 7 oder höher ausgeführt werden.

Symbol das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 01.12.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=rwlp_sec_scim_operations
Dateiname: rwlp_sec_scim_operations.html