Implantación de ejemplo de un gateway de SCIM personalizado

Oracle proporciona una aplicación de ejemplo que cumple las especificaciones SCIM y que puede utilizar para desarrollar un gateway de SCIM personalizado para integrarlo con su aplicación personalizada.

Puede descargar la implementación de ejemplo idcs-scim-gateway-app desde https://github.com/oracle-samples/idm-samples/tree/master/idcs-scim-gateway-app.

Este gateway personalizado expone los puntos finales HTTP para activar operaciones como la creación, la búsqueda, la actualización y la supresión de usuarios. El gateway personalizado almacena información sobre los usuarios de forma local en el archivo db.json. Este archivo tiene el formato JSON.

Gateway SCIM personalizado que expone puntos finales HTTP para activar operaciones como la búsqueda, la creación, la actualización y la supresión de usuarios
Elemento Descripción
Llamada 2

GET http(s)://<scimgatehost:port>/scimgate/Users

GET http(s)://<scimgatehost:port>/scimgate/Users/<id>

Llamada 2

POST http(s)://<scimgatehost:port>/scimgate/Users

PUT http(s)://<scimgatehost:port>/scimgate/Users/<id>

DELETE http(s)://<scimgatehost:port>/scimgate/Users/<id>

La aplicación de ejemplo utiliza los paquetes express y body-parser. El archivo server.js implanta una ruta para los puntos finales de los usuarios:

"...
var express = require('express')
var app = express()
var bodyParser = require('body-parser');
app.use(bodyParser.json());
var config = require('./config.js');
..."

El archivo routes/users.js define los puntos finales de la API de REST de SCIM y asigna cada punto final a la función de JavaScript correspondiente:

"...
//Get operation for /Users endpoint
app.get('/scimgate/Users', users.findAll);

//Get operation for /Users/:id endpoint
app.get('/scimgate/Users/:id', users.findOne);

//Put operation for /Users endpoint
app.post('/scimgate/Users', users.create);

//Put operation for /Users endpoint
app.put('/scimgate/Users/:id', users.update);

//Delete operation for /Users endpoint
app.delete('/scimgate/Users/:id', users.delete);
..."

El archivo user.controller.js implanta funciones de JavaScript para crear, leer, actualizar y suprimir usuarios en el almacén de usuarios local, representado por el archivo userdb.json:

"...
exports.findAll = function(req, res){
console.log('Entering findAll function.');
...
};

exports.findOne = function(req, res) {
console.log('Entering findOne function.');
...
};

exports.create = function(req, res){ console.log('Entering create function.');
...
};

exports.update = function(req, res){
console.log('Entering update function.');
...
};

exports.delete = function(req, res){ console.log('Entering delete function.');
...
};

..."

El archivo userdb.json contiene una matriz de usuarios y la estructura de cada entrada de usuario sigue el estándar de especificación SCIM, utilizando un subjuego de atributos de usuario:

{
  "resources": [
    {
      "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
      ],
      "id": "1",
      "externalId": "1",
      "userName": "user1@example.com",
      "name": {
        "formatted": "User 1 Name",
        "familyName": "Name",
        "givenName": "User 1"
      },
      "displayName": "User 1 DisplayName",
      "active": true,
      "password": "User1Password",
      "emails": [
        {
          "value": "user1@example.com",
          "type": "work",
          "primary": true
        }
      ]
    }
  ]
}

Para autorizar al cliente a realizar solicitudes HTTP, la aplicación de gateway de SCIM de ejemplo utiliza dos variables de entorno que debe definir antes de ejecutar la aplicación: ADMINUSER y ADMINPASS. Estas variables representan el nombre de usuario y la contraseña del administrador para el servicio de autenticación de API. Puede proporcionar valores para estas variables mediante la configuración del script de shell run.sh para entornos UNIX o Mac, o el script por lotes run.bat para entornos Windows.

IAM envía estas credenciales administrativas en forma de cabecera de autorización para todas las solicitudes a fines de autenticar las credenciales del administrador y, a continuación, accede al gateway del SCIM personalizado mediante el tipo del permiso basic.

Puede modificar el código fuente de la aplicación de ejemplo e implantar otros tipos de métodos de autenticación para que coincidan con sus requisitos.

También puede cambiar el código fuente de la aplicación de ejemplo para que, en lugar de ponerse en contacto con el almacén de usuarios local (representado por el archivo userdb.json), la nueva aplicación de ejemplo se ponga en contacto con el almacén de identidades de la aplicación para crear, leer, actualizar y suprimir usuarios.