Permitirá que Cloud Foundry recupere automáticamente la aplicación de enrutador cuando se implemente. Para lograr esto, primero establecerá la estructura necesaria.
Ve a tu favorito
<destLocation>
y crea elapprouter
directorio:cd <destLocation> mkdir approuter cd approuter
Agregue lo siguiente
package.json
hagoapprouter
directorio:{ "name": "approuter", "dependencies": { "@sap/approuter": "*" }, "scripts": { "start": "node node_modules/@sap/approuter/approuter.js" } }
Dentro de
<destLocation>/approuter
crear un nuevo archivo llamadoxs-app.json
con el siguiente contenido:{ "welcomeFile": "index.html", "routes": [{ "source": "/", "target": "/", "destination": "app-destination" }] }
Crea una última pero no menos importante
manifest.yml
archivo dentro<destLocation>
para el servicio de micro enrutador de la aplicación con el siguiente contenido:
--- applications: - name: approuter routes: - route: approuter-<subdomain>.cfapps.<region_id>.hana.ondemand.com path: approuter memory: 128M buildpacks: - nodejs_buildpack env: TENANT_HOST_PATTERN: 'approuter-(.*).cfapps.<region_id>.hana.ondemand.com' destinations: '[{"name":"app-destination", "url" :"<APPLICATION_URL>", "forwardAuthToken": true}]' services: - my-xsuaaAdapte el archivo de la siguiente manera:
Sustituir
<subdomain>
con su subdominio. Puede encontrar su subdominio en la cabina de CF dirigiéndose a la página de descripción general de su subcuenta:Cambia ambos casos
<region_id>
con su región particular (p. ej.eu10
). Puede encontrarlo, por ejemplo, incluido en el punto final de la API (también enumerado en la imagen de arriba) justo anteshana.ondemand.com
. Se pueden encontrar más detalles sobre las URL específicas de la región. aquí.- I
destinations
en lugar de<APPLICATION_URL>
con la URL real de una aplicación utilizada anteriormente. Nuevamente, puede obtenerlo en un bloque CF o enumerando todas las rutas disponibles a través decf routes
. Nota: el URI especificado para<APPLICATION_URL>
debe estar completo, p. ej.https://<app-name>.cfapps.<region>.hana.ondemand.com
.
Comprender el AppRouter manifest.yml
En Cloud Foundation, cada subcuenta se asigna directamente a un subdominio asociado con un inquilino. Para múltiples inquilinos, el enrutador de la aplicación necesita saber qué inquilino reenviar al servicio XSUAA. Esto se logra al incluir el subdominio en el host, del cual el enrutador de la aplicación lo eliminará. Eso es donde TENANT_HOST_PATTERN
entra en juego. Es una variable que determina el patrón de cómo se identifican y manejan los inquilinos en la URL. Para este tutorial, esperamos que el anfitrión cumpla approuter-<subdomain>
. Si desea diferentes patrones de URL, necesita el route
y TENANT_HOST_PATTERN
respectivamente.
Tenga en cuenta que el TENANT_HOST_PATTERN
Las variables solo son necesarias en una verdadera aplicación multiinquilino, es decir, aplicaciones en las que la implementación física atiende a varios clientes de la misma implementación. Esta serie de tutoriales asume que desea crear aplicaciones multiinquilino, ya que se centra en el desarrollo nativo de la nube. Sin embargo, esta variable no es necesaria si tiene una solicitud de inquilino individual. Para lograr esto, el xs-security.json
reportero de seguridad puede declarar "tenant-mode": "dedicated"
(vea el paso 5 a continuación).
Pasando a la destinations
entrada. Es una variable que confirma las rutas internas del App Router a los microservicios básicos de respaldo. Como solo tiene un microservicio todavía, solo puede definir un destino conocido app-destination
aquí. SEO app-destination
se refiere a las personas creadas antes xs-app.json
expediente.
Por último, si bien no menos importante services
Esta sección confirma su propio caso de servicio XSUAA para conectarse a la aplicación Router. Esta vinculación asegurará un correspondiente VCAP_SERVICES
una entrada que contiene el ID de cliente, el secreto del cliente y la clave pública necesaria para validar cualquier token OAuth / JWT entrante del servicio XSUAA:
Conectar el servicio XSUAA
Ahora necesita crear un servicio que sea vinculante para el servicio XSUAA. Como requisito previo necesitas xs-security.json
(reportero de seguridad) un archivo que contiene una declaración del alcance de la autorización que tiene la intención de utilizar en su solicitud. Por ejemplo, solo un DISPLAY
alcance que se utilizará más tarde para autorizar a sus usuarios. Además, se denomina plantilla de roles. Viewer
refiriéndose a nuestro DISPLAY
se declara el alcance.
Envíe este archivo a <destLocation>/xs-security.json
. Para obtener una explicación más detallada del alcance y las plantillas de funciones, consulte el apéndice de este tutorial. Más detalles sobre la sintaxis del xs-security.json
disponible aquí.
Nota: Un
xsappname
debe ser único en todo el escenario XSUAA. Le sugerimos que siga el mismo patrón.<app-name>-<subdomain>
.Nota: Como se explicó anteriormente, el
"tenant-mode": "shared"
Acepta múltiples solicitudes de inquilinos y reclama laTENANT_HOST_PATTERN
variables a declarar. También puedes usar"tenant-mode": "dedicated"
si desarrolla una solicitud de inquilino individual.
<destLocation>/xs-security.json
:
{
"xsappname": "firstapp-<subdomain>",
"tenant-mode": "shared",
"scopes": [
{
"name": "$XSAPPNAME.Display",
"description": "display"
}
],
"role-templates": [
{
"name": "Viewer",
"description": "Required to view things in our solution",
"scope-references" : [
"$XSAPPNAME.Display"
]
}
]
}
Cree el archivo y cambie el nombre de la aplicación exactamente como antes.
Luego crea un ejemplo de un servicio llamado my-xsuaa
del servicio XSUAA emitiendo el siguiente comando y el xs-security.json
expediente:
cf create-service xsuaa application my-xsuaa -c xs-security.json
Si creó este ejemplo del servicio XSUAA anterior sin el xs-security.json
parámetro, puede desconectar y eliminar el caso existente con estos comandos antes de crearlos con el comando anterior:
cf unbind-service firstapp my-xsuaa
cf delete-service my-xsuaa
Después de crear el servicio XSUAA, implemente el enrutador de la aplicación utilizando lo siguiente (con el punto final de API apropiado en su región de Cloud Foundry):
cd <destLocation>
cf push
Luego, debería poder encontrar el enrutador de la aplicación dentro de su navegador utilizando el nombre de host de su implementación. Este es mi caso https://approuter-p1942765239trial.cfapps.eu10.hana.ondemand.com/hello
si se le proporciona la siguiente página de inicio de sesión donde puede utilizar su correo electrónico de usuario y contraseña:
Después de iniciar sesión, debe HelloWorld
servlet que ahora sirve a la aplicación Router como proxy para su aplicación Java: