Operaciones SCIM en el perfil de Liberty

Las especificaciones del sistema para la gestión de identidades entre dominios (SCIM) 1.1 están soportadas en Liberty.

Recuperación de recursos

WebSphere Application Server Liberty soporta especificaciones de SCIM 1.1. Si desea más información sobre la especificación, consulte http://www.simplecloud.info/.

Para recuperar un recurso conocido, debe enviar una solicitud GET al punto final HTTP configurado. Por ejemplo, /Users/{id} o /Groups/{id}.

El ejemplo siguiente muestra las operaciones en un registro LDAP.
    <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>
Para recuperar un recurso de LDAP, debe enviar una solicitud GET como https://localhost:9090/ibm/api/scim/Users/uid=jsmith,o=ibm,c=us.

Consulta de recursos

Para consultar recursos, debe enviar una solicitud GET al punto final HTTP configurado y especificar el filtro para la búsqueda. También puede especificar el parámetro de atributos para devolver un subconjunto de valores de los recursos devueltos y especificar los parámetros de paginación y clasificación para organizar los recursos devueltos. Los ejemplos siguientes muestran algunas de las opciones de filtro:
  • Especifique el parámetro para recuperar el subconjunto de los valores: Por ejemplo: https://localhost:9090/ibm/api/scim/Users?filter=givenname sw "Jo" recupera todos los usuarios cuyo nombre empieza por “Jo”.
  • Especifique el parámetro de atributos para recuperar un subconjunto de los valores: Por ejemplo: https://localhost:9090/ibm/api/scim/Users?filter=givenname sw "Jo"&attributes=username,emails&filter=name.familyname eq "Smith" recupera las direcciones de correo electrónico del nombre de usuario que empieza con “Jo” y cuyo apellido es “Smith”.
  • Especifique los parámetros de paginación y clasificación para recuperar recursos organizados. Por ejemplo, https://localhost:9090/ibm/api/scim/Users?filter=givenname sw "Jo"&attributes=username&sortBy=username&startIndex=3&count=5 recupera la tercera página del resultado clasificado con cada página que contiene cinco nombres que empiezan con “Jo” y cuyo apellido es “Smith”.
Notas:
  • Los repositorios federados subyacentes determinan si los valores que se han especificado en los filtros distinguen las mayúsculas y las minúsculas. En el caso de LDAP, los valores no distinguen entre mayúsculas y minúsculas de forma predeterminada, a menos que el atributo esté correlacionado con un atributo LDAP que haga esta distinción.
  • El nombre de usuario no se puede utilizar en el filtro de búsqueda.
  • Al federar registros básicos, SAF o personalizados que no soportan los atributos SCIM, siempre se busca el patrón de filtro con respecto al nombre de usuario y solo se devuelve el atributo del nombre de usuario.

Creación de recursos

Para crear recursos nuevos, debe enviar una solicitud POST al punto final de recurso, es decir, Users o Groups. El contenido de POST debe contener el objeto json de usuario y el tipo de contenido de cabecera HTTP debe establecerse en application/json.
Nota: El tipo de contenido application/xml no está soportado.
Para crear un usuario, se debe publicar la solicitud siguiente en https://localhost:9090/ibm/api/scim/Users Content-Type
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"
  }
}

La solicitud debe contener todos los atributos necesarios para crear correctamente un Usuario o Grupo en el registro de usuarios. Por ejemplo, en un Tivoli Directory Server LDAP de programa de fondo, el conjunto mínimo de atributos LDAP necesarios para crear un usuario sería uid, sn, and cn; de forma que cualquier solicitud para la creación de un usuario debe contener userName, givenName y familyName. La operación crear falla si hay alguna violación de esquema del registro de usuarios.

El atributo externalId actúa como un identificador y se debe especificar. El formato del atributo depende de la especificación del registro de usuarios de programa de fondo. En el ejemplo anterior, el programa de fondo es un servidor LDAP con una baseEntry como o=ibm,c=us y la propiedad RDN para el usuario se establece como UID, de forma que externalId se convierte en uid=bjensen,o=ibm,c=us.

Basándose en la solicitud de creación, se devuelve el objeto de usuario creado.
{
    "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"
    }
}
Cuando se ha configurado más de un LDAP y se debe invocar una operación crear, se debe definir un padre predeterminado para la entidad. El padre definido especifica la entrada base bajo la cual se debería crear la nueva entidad. El ejemplo siguiente muestra la configuración de un padre predeterminado para 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>

Modificación de recursos

Para modificar recursos, se necesita enviar una solicitud PUT al punto final de recurso, es decir, /Users o /Groups. Una solicitud PUT realiza una actualización completa del recurso. Se suprime cualquier atributo no especificado en la entrada.
Nota: Las actualizaciones parciales con PATCH están soportadas.
Para modificar el recurso creado anteriormente, se debe publicar la solicitud siguiente en https://localhost:9090/ibm/api/scim/Users/uid=bjensen,o=ibm,c=us.
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"
  }
}
Esta solicitud modifica el nombre dato del objeto de Barbara a Barb. El ID especificado en el URL debe coincidir con el externalId especificado en el objeto de usuario.
Para modificar un grupo cn=employeeGroup,o=ibm,c=us y cambiar la pertenencia del grupo, se debe especificar el atributo de miembro.
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"}]
}
Para modificar un grupo cn=employeeGroup,o=ibm,c=us y eliminar todos los miembros de un grupo, se debe especificar un atributo de miembro vacío.
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":[]
}

Supresión de recursos

Para suprimir recursos, tendrá que enviar una solicitud DELETE al punto final de recurso, es decir, /Users o /Groups. Por ejemplo, para suprimir el usuario uid=bjensen,o=ibm,c=us que se ha creado en el ejemplo anterior, envíe una solicitud a https://localhost:9090/ibm/api/scim/Users/uid=bjensen,o=ibm,c=us
Nota: SCIM solo se ejecuta en Java 7 o posterior.

Icono que indica el tipo de tema Tema de referencia



Icono de indicación de fecha y hora Última actualización: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=rwlp_sec_scim_operations
Nombre de archivo:rwlp_sec_scim_operations.html