Inicio rápido: apps de fondo de Liberty for Java

Con App ID, puede proteger fácilmente los puntos finales de API y garantizar la seguridad de las aplicaciones de fondo de Liberty for Java. Con la guía, puede obtener rápidamente un flujo de autenticación sencillo y tenerlo en ejecución en menos de 20 minutos.

Backend Liberty for Java
Liberty for Java

  1. Para realizar una solicitud a un recurso protegido, los clientes deben tener una señal de acceso. En el paso 1, el cliente solicita una señal a App ID. Para obtener más información sobre la obtención de señales de acceso, consulte Obtención de señales.
  2. App ID devuelve las señales.
  3. Utilizando la señal de acceso, el cliente hace una solicitud para acceder al recurso protegido.
  4. El recurso valida la señal que incluye la estructura, la caducidad, la firma, la audiencia y cualquier otro campo presente. Si la señal no es válida, el servidor de recursos deniega el acceso. Si la validación de la señal es satisfactoria, devuelve los datos.

Antes de empezar

Antes de empezar con App ID en la aplicación de fondo Liberty for Java, debe tener los requisitos previos siguientes:

¿No tiene una app con la que poder probar el flujo? ¡No hay ningún problema! App ID proporciona una app de ejemplo simple de Liberty for Java.

Obtener las credenciales

Puede obtener sus credenciales de dos maneras.

  • Vaya al separador Aplicaciones del panel de control de App ID. Si aún no dispone de una, puede pulsar Añadir aplicación para crear una nueva.

  • Realizando una solicitud POST al punto final de /management/v4/<tenantID>/applications.

     Request format:
     ```sh {: codeblock}
     curl -X POST \  https://us-south.appid.cloud.ibm.com/management/v4/<tenantID>/applications/ \
     -H 'Content-Type: application/json' \
     -H 'Authorization: Bearer <IAMToken>' \
     -d '{"name": "ApplicationName"}'
     ```
     Example response:
     ```json {: screen}
     {
       "clientId": "xxxxx-34a4-4c5e-b34d-d12cc811c86d",
       "tenantId": "xxxxx-9b1f-433e-9d46-0a5521f2b1c4",
       "secret": "ZDk5YWZkYmYt*******",
       "name": "app1",
       "oAuthServerUrl": "https://us-south.appid.cloud.ibm.com/oauth/v4/xxxxx-9b1f-433e-9d46-0a5521f2b1c4",
       "profilesUrl": "https://us-south.appid.cloud.ibm.com",
       "discoveryEndpoint": "https://us-south.appid.cloud.ibm.com/oauth/v4/xxxxxx-9b1f-433e-9d46-0a5521f2b1c4/.well-known/openid-configuration"
     }
     ```
    

Configurar el archivo server.xml

  1. Abra el archivo server.xml.

  2. Añada las características siguientes a la sección featureManager. Es posible que algunas características puedan estar incluidas con Liberty. Si recibe un error al ejecutar el servidor, los puede instalar ejecutando .installUtility install {name_of_server} desde el directorio bin de la instalación de Liberty.

    <featureManager>
       <feature>appSecurity-2.0</feature>
       <feature>openidConnectClient-1.0</feature>
       <feature>ssl-1.0</feature>
       <feature>servlet-3.1</feature>
    </featureManager>
    
  3. Configure SSL añadiendo lo siguiente al archivo server.xml.

    <keyStore id="defaultKeyStore" password="{password}"/>
    <keyStore id="RootCA" password="{password}" location="${server.config.dir}/resources/security/{myTrustStore}"/>
    <ssl id="{sslID}" keyStoreRef="defaultKeyStore" trustStoreRef="{truststore-ref}"/>
    
  4. Cree una característica de Open ID Connect Client y defina los siguientes marcadores de posición. Con las credenciales que ha obtenido, rellene los marcadores.

    <openidConnectClient
       id="oidc-client-simple-liberty-backend-app" 		
       inboundPropagation="required"
       jwkEndpointUrl="<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>/publickeys"
       issuerIdentifier="<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>"
       signatureAlgorithm="RS256"
       audiences="{client-id}"
       sslRef="oidcClientSSL"
    /> 	
    
    Variables del elemento de OIDC para las apps de Liberty for Java
    Variable Descripción
    id El nombre de la aplicación.
    inboundPropagation Para propagar la información recibida en la señal, el valor debe establecerse en "obligatorio".
    jwkEndpointUrl El punto final que se utiliza para obtener claves para validar la señal. Obtenga más información sobre las regiones disponibles. Puede encontrar el ID de arrendatario en las credenciales que ha creado previamente.
    issuerIdentifier El identificador de emisor define el servidor de autorización. Obtenga más información sobre las regiones disponibles. Puede encontrar el ID de arrendatario en las credenciales que ha creado previamente.
    signatureAlgorithm Especificado como "RS256".
    audiences De forma predeterminada, la señal se emite para el ID de cliente de App ID que se encuentra en las credenciales de la aplicación.
    sslRef El nombre de la configuración de SSL que desea utilizar.
  5. Defina el tipo de sujeto especial como ALL_AUTHENTICATED_USERS.

    <application
       id="simple-liberty-backend-app"
       location="location-of-your-war-file"
       name="simple-liberty-backend-app"
       type="war">
    
       <application-bnd>
          <security-role name="myrole">
                <special-subject type="ALL_AUTHENTICATED_USERS"/>
          </security-role>
       </application-bnd>
    </application>
    

Configurar el archivo web.xml

En el archivo web.xml, defina las áreas de la aplicación que desea proteger.

  1. Defina un rol de seguridad. Este rol debe ser el mismo que el que ha definido en el archivo server.xml.

    <security-role>
    <role-name>myrole</role-name>
    </security-role>
    
  2. Defina una restricción de seguridad.

    <security-constraint>
       <display-name>Security Constraints</display-name>
       <web-resource-collection>
          <web-resource-name>ProtectedArea</web-resource-name>
          <url-pattern>/api/*</url-pattern>
       </web-resource-collection>
       <auth-constraint>
          <role-name>myrole</role-name>
       </auth-constraint>
       <user-data-constraint>
          <transport-guarantee>NONE</transport-guarantee>
       </user-data-constraint>
    </security-constraint>
    

Probar la configuración

Ahora que ha terminado la instalación inicial, cree la aplicación y pruebe la configuración para asegurarse de que todo funciona como se esperaba.

  1. Cambie al directorio de la aplicación.

  2. Cree la aplicación.

    server run
    
  3. Realice una solicitud al punto final protegido. Se devuelve un error.

  4. Obtenga una señal de acceso.

  5. Con la señal de acceso que ha obtenido en el paso anterior, realice una solicitud al punto final. Ahora puede acceder al punto final protegido. Verifique que la respuesta contiene la información esperada.