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}.
<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
- 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”.
- 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
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.
{
"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>
Modificación de recursos
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. 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":[]
}