El objetivo de este tutorial es proteger e implementar una aplicación de lista de productos con autenticación y autorización, de modo que solo los usuarios autenticados con las autorizaciones correctas puedan ver los productos dentro de la aplicación. Los usuarios sin las autorizaciones necesarias pueden iniciar sesión en la aplicación, pero no ven los productos.
La base de este tutorial es la aplicación Node.js que usa el marco explícito y SAPUI5 para mostrar una lista de productos (ver imagen).
Tabla de contenidos
XSUAA y el enrutador de aplicaciones
Para proteger esta aplicación de lista de productos, se utilizan dos componentes. Uno se llama servicio XSUAA y el otro se llama enrutador de aplicaciones. El enrutador de la aplicación se utiliza junto con el servicio XSUAA para autenticar a un usuario y dirigirlo a la aplicación segura.
XSUAA desempeña la función de servicio autorizado OAuth, pero el enrutador de la aplicación desempeña la función de cliente OAuth. Además, el enrutador de la aplicación actúa como un punto de entrada central para la aplicación. Para obtener más información, consulte los enlaces al final de este tutorial.
Paso 1: preparar los archivos de la aplicación
Prepara el archivo index.js
Para evitar una llamada directa a su aplicación sin autenticación, es necesario agregar algún código a su aplicación. En nuestro ejemplo, utiliza el centro de autenticación de paso de Node.js y lo configura con la estrategia XSUAA de JST.
Ve a la product-list/myapp carpeta.
Abre el index.js expediente.
Para usar bibliotecas adicionales, agregue las siguientes líneas de código debajo de la línea // secure the direct call to the application
Este código prohíbe las llamadas directas a la aplicación de lista de productos sin un JWT válido.
Para agregar controles de autorización a la lista de productos, reemplace la línea app.get('/products', getProducts); sa index.js archivo con el siguiente código:
app.get('/products', checkReadScope, getProducts);
// Scope check
function checkReadScope(req, res, next) {
if (req.authInfo.checkLocalScope('read')) {
return next();
} else {
console.log('Missing the expected scope');
res.status(403).end('Forbidden');
}
}
El es checkReadScope una función asegura que solo un usuario con las autorizaciones correctas pueda ver los productos.
Guarda el archivo.
Prepare el archivo package.json
Como ahora se utilizan más módulos junto al módulo express, debe agregar las dependencias relevantes a su package.json expediente. En este caso las dependencias del módulo passport, @sap/xsenv y @sap/xssec para agregar.
Si desea utilizar módulos de SAP localmente, debe agregar la configuración npm:
Paso 2: preparar el informador de seguridad de la aplicación
Para usar el servicio XSUAA, un archivo llamado xs-security.json necesario. El archivo puede definir las propiedades del servicio XSUAA, así como varios roles y autorizaciones. Este ejemplo tiene una plantilla de roles y una colección de roles con Visor de lista de productos rol, que permite al usuario ver los productos más tarde.
Agregar una carpeta llamada security hacer product-list carpeta.
Dentro de la carpeta, cree un archivo llamado xs-security.json.
Agrega el siguiente contenido:
{
"xsappname": "product-list",
"tenant-mode": "dedicated",
"scopes": [
{
"name": "$XSAPPNAME.read",
"description": "With this scope, USER can read products."
}
],
"role-templates": [
{
"name": "Viewer",
"description": "Role to get the list of products",
"scope-references": [
"$XSAPPNAME.read"
]
}
],
"role-collections": [
{
"name": "ProductListViewer",
"description": "Product List Viewer",
"role-template-references": [
"$XSAPPNAME.Viewer"
]
}
]
}
Esto crea una colección de roles con una plantilla de rol y un rol con alcance de lectura, para que un usuario con este rol pueda ver los productos.
Guarda el archivo
Para aprender más sobre estos xs-security.json archivo, consulte los enlaces al final de este tutorial.
Paso 3: preparar los archivos de licencia
El conector le permitirá crear una ruta segura con su aplicación.
Agregar una carpeta llamada approuter hacer product-list carpeta.
Dentro de esa carpeta crea un archivo llamado package.json.
En el archivo de demostración, debe definir un nombre de host para su aplicación y agregar un destino. El archivo de demostración se utiliza para adjuntar el ejemplo del servicio XSUAA a su aplicación.
Los pasos muestran de forma incremental los parámetros y valores que deben agregarse. Para evitar errores de sangría, solo puede copiar el código completo al final.
Ve a la product-list carpeta.
Abre el archivo manifest.yaml.
Dar al parámetro un nombre de host específico route. La ruta debe ser única en todo el paisaje de Cloud Foundry, así que asegúrese de agregar una sección aleatoria a la ruta, como sus iniciales y fecha de nacimiento, como product-list-ap25 y approuter-product-list-ap25. También necesita la forma de configurar un destino más adelante.
El es name el parámetro es el mismo que la definición anterior en el archivo xs-app.json. un url un parámetro que da como resultado un nombre de host para las aplicaciones y una región para el panorama de Cloud Foundry (https://<hostname>.cfapps.<region>.hana.ondemand.com). El es forwardAuthToken el parámetro realmente establecido asegura que el solicitante reenvía la señal JWT al destino.
Agregue las conexiones al servicio XSUAA al aprobador.
...
services:
- xsuaa-service-tutorial
Guarda el archivo.
Cuando haya completado los pasos, su archivo manifest.yml debería aparecer:
Paso 8: Llame a su aplicación desde su ruta segura
Su aplicación se define de dos formas manifest.yml. La ruta directa a la aplicación debería devolver un mensaje de error que diga unauthorized (porque aún no tiene un JWT válido). La ruta segura redirige a través del habilitador a una pantalla de inicio de sesión. Después de iniciar sesión, la aplicación se abre pero muestra el mensaje no data. Para ver los detalles del producto, debe asignar la colección de roles a su usuario con las autorizaciones necesarias.
Primero asegúrese de que su aplicación no pueda ser alcanzada por su URL directa:
Mensaje de error: el nombre de host de su aplicación ya está en uso
Para resolver este error, agregue el manifest.yml archivo y cambiar el route parámetro de aplicación de lista de productos o el route el parámetro del aprobador (dependiendo del nombre de host que ya esté tomado). Si cambia el parámetro de la aplicación de lista de productos, asegúrese de url también parámetro sobre destinos.
Inicie sesión en XS Advanced CLI como XSA_ADMIN. Usar comando xs-admin-login desde el indicador en la máquina virtual como hxeadm Nota: Si no está usando…
Los tutoriales anteriores son una continuación de los tutoriales anteriores. Se asume que ha creado un TPCH usuario con los permisos correctos e iniciado sesión…