Introducción: Este documento describe cómo otorgar diferentes permisos de operaciones API a diferentes consumidores en SAP API Management para el mismo proxy API utilizando la política KVM y Java Script.
Primero déjame decirte la forma estándar de restringir las operaciones de un consumidor.
Tomemos un ejemplo de API de socio comercial de S/4 Hana.
Ahora, si algún otro consumidor requirió acceso a la API del socio comercial con alguna otra combinación de recurso y operación, repita el proceso anterior nuevamente del 1 al 5.
Por lo tanto, todas las combinaciones de recursos y operaciones tendrán un proxy API separado y un producto separado que apuntará a la misma API en el back-end. (Consulte la imagen a continuación).
Otro enfoque es una forma personalizada de lograr lo mismo, donde solo un proxy API tendrá todas las combinaciones de recursos y operaciones, y el permiso de operación + acceso a recursos se puede administrar mediante políticas de script KVM y Java. (Consulte la imagen a continuación).
Aquí, voy a utilizar un enfoque similar al anterior. Blog
Beneficios de este enfoque
Aquí voy a agregar políticas al mismo proxy API que usé en mi anterior Blog que explica una forma personalizada de administrar direcciones IP y rangos de direcciones IP.
Antes de continuar, permítanme crear un KVM llamado «Permiso API” y poner permitido operación+recurso de un consumidor, donde la clave es el nombre del consumidor y el valor son combinaciones de operación y recurso.
Formato de la combinación: Operación/Recurso
Ejemplo, Obtener datos donde GET es Operación y «datos» es el recurso de API.
Para combinaciones múltiples, separe cada combinación con “,”
Ejemplo, OBTENER/datos,BORRAR/datos
Déjame explicarte con la ayuda de la imagen de abajo qué es exactamente lo que voy a hacer aquí.
En la imagen de arriba,
Abramos el editor de políticas.
Ya he explicado las primeras cuatro políticas, así que comencemos con la quinta.
2”Obtener permiso” es una política de operación de KVM, que dirá Permiso API KVM con “verificarapikey.VAPIK.DisplayName«como clave y después de obtener el valor de esa clave KVM, asignará ese valor a la variable»var.Permiso“.
4. “Verificar permiso API» es una política de script java, que hace referencia al script java «Verificar APIPermissions.js“, el script java VerifyAPIPermissions tomará la dirección de operación y recurso de la solicitud e intentará encontrarla en var.Permisosi se encuentra entonces propiedad “javascript.VerifyAPIPermission.failed”se establecerá con falso; de lo contrario, se establecerá con verdadero.
Verificar permisos.js
Código VerifyAPIPermissions.js
var reqResource=context.getVariable("proxy.pathsuffix"); var httpverb=context.getVariable("request.verb"); var permission=context.getVariable("var.AllowedAPI"); var index= reqResource.substring(1).indexOf("/"); var resource=""; if(index == -1) resource =httpverb+reqResource.substring(0); else resource =httpverb+reqResource.substring(0,index+1); if (!(permission.includes(resource))) throw "No permission";
5. “RFSinPermiso» es una política de aumento de fallas que se ejecutará si «javascript.VerifyAPIPermission.failed”es igual a verdadero, lo que significa que la política de secuencias de comandos Java falló debido a que no hay permiso.
En cadena de condición “javascript.VerifyAPIPermission.failed es igual a verdadero«
Escriba cualquier mensaje personalizado en la carga útil como «Sin permiso para la operación o recurso solicitado”.
6. Actualice la política, guarde los cambios del proxy e impleméntelo.
Hagamos algunas pruebas positivas y negativas.
Pruebas positivas: Obtener respuesta de API porque obtener permiso del recurso de «datos» está configurado en KVM.
Pruebas negativas: Se produce una respuesta de error porque el permiso de colocación del recurso de «datos» no está configurado en KVM.
Conclusión: Este documento explica cómo utilizar la política de KVM, cómo configurar los permisos de API en KVM y leerlos en tiempo de ejecución.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073