Visión general
El protocolo SCIM es un protocolo basado en HTTP para la provisión y gestión de datos de identidad especificados a través de esquemas SCIM. Puedes usar Casdoor como un proveedor de servicios SCIM.
Usar Casdoor como proveedor de servicios SCIM
Actualmente Casdoor solo soporta User Resource Schema, puedes gestionar usuarios a través de operaciones de Usuario SCIM. Puedes interactuar con Casdoor a través de los siguientes puntos finales:
| Punto final | Método | Descripción |
|---|---|---|
| /scim/ServiceProviderConfig | GET | Proporcionar detalles sobre las características del estándar SCIM que son soportadas, por ejemplo, los recursos que son soportados. |
| /scim/Schemas | GET | Proporcionar detalles sobre los esquemas del proveedor de servicios. |
| /scim/ResourceTypes | GET | Especificar metadatos sobre cada recurso. |
| /scim/Users/:id | GET | Recuperar un usuario con el identificador de recurso id. |
| /scim/Users | GET | Consultar usuarios con parámetros de consulta (actualmente solo soporta startIndex y count). |
| /scim/Users | POST | Crear un usuario. |
| /scim/Users/:id | PUT | Actualizar un usuario con el identificador de recurso id. |
| /scim/Users/:id | PATCH | Modificar un usuario con el identificador de recurso id mediante la operación PATCH. |
| /scim/Users/:id | DEL | Eliminar un usuario con el identificador de recurso id. |
Para más detalles, por favor consulta rfc7644.
Recurso de Usuario
Casdoor implementa el mapeo entre User Resource Schema (SCIM) y User (Casdoor). La relación de mapeo entre atributos es como sigue:
| Esquema de Recurso de Usuario (SCIM) | Usuario (Casdoor) |
|---|---|
| id | Id |
| meta.created | CreatedTime |
| meta.lastModified | UpdatedTime |
| meta.version | UpdatedTime |
| externalId | ExternalId |
| userName | Name |
| password | Password |
| displayName | DisplayName |
| profileUrl | Homepage |
| userType | Type |
| name.givenName | FirstName |
| name.familyName | LastName |
| emails[0].value | |
| phoneNumbers[0].value | Phone |
| photos[0].value | Avatar |
| addresses[0].locality | Location |
| addresses[0].region | Region |
| addresses[0].country | CountryCode |
Dado que Casdoor usa Organización para gestionar Usuario, donde cada Usuario pertenece a una Organización específica, el atributo organization debe ser pasado en Enterprise User Schema Extension (identificado por el URI del esquema urn:ietf:params:scim:schemas:extension:enterprise:2.0:User). Aquí hay una representación en formato JSON del Esquema de Recurso de Usuario SCIM:
{
"active": true,
"addresses": [
{
"country": "CN",
"locality": "Shanghai",
"region": "CN"
}
],
"displayName": "Bob~",
"emails": [
{
"value": "test1@casdoor.com"
}
],
"externalId": "1234123543234234",
"id": "ceacbcb6-40d0-48f1-af23-0990232d570a",
"meta": {
"resourceType": "User",
"created": "2023-10-08T23:51:55+08:00",
"lastModified": "2023-10-12T20:38:49+08:00",
"location": "Users/ceacbcb6-40d0-48f1-af23-0990232d570a",
"version": "2023-10-12T20:38:49+08:00"
},
"name": {
"familyName": "bob",
"formatted": "alice bob",
"givenName": "alice"
},
"nickName": "Bob~",
"phoneNumbers": [
{
"value": "18700006475"
}
],
"photos": [
{
"value": "https://cdn.casbin.org/img/casbin.svg"
}
],
"profileUrl": "https://test.com/profile/built-in/scim_test_user2",
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": { // The enterprise User extension is identified using this schema URI
"organization": "built-in" // This attribute MUST be passed
},
"userName": "scim_test_user2",
"userType": "normal-user"
}