Creación de una comprobación de seguridad

improve this page | report issue

Visión general

Las comprobaciones de seguridad constituyen el bloque de construcción de lado del servidor básico de la infraestructura de seguridad de MobileFirst. Una comprobación de seguridad es una entidad de lado del servidor que implementa una lógica de autorización, por ejemplo la obtención y validación de las credenciales del cliente. Proteja un recurso asignándole un ámbito que correlacione cero o más comprobaciones de seguridad. La infraestructura de seguridad asegura que solo se concede acceso al recurso a los clientes que superan todas las comprobaciones de seguridad del ámbito de protección. Puede utilizar comprobaciones de seguridad para autorizar acceso a los recursos alojados en MobileFirst Server y a los recursos de un servidor de recursos externo.

Un adaptador puede ser un adaptador de recursos (lo que significa que presenta recursos y contenido para enviar al cliente), un adaptador SecurityCheck, o ambos.

Nota: Cuando las comprobaciones de seguridad se implementan en adaptadores, la infraestructura de seguridad MobileFirst y las API de adaptador se separan y no pueden mezclarse. Por lo tanto, no puede utilizar un API de adaptador, como la interfaz AdpatersAPI en el código de comprobación de seguridad, ni API de comprobación de seguridad en el código de recursos de adaptador.

La arquitectura de la infraestructura de seguridad es modular y flexible y, por lo tanto, la implementación de la comprobación de seguridad no es intrínsecamente independiente de cualquier recurso o aplicación. Puede reutilizar la misma comprobación de seguridad para proteger diferentes recursos y utilizar combinaciones de comprobación de seguridad diferentes para varios flujos de autorización. Para ampliar la flexibilidad, una clase de comprobación de seguridad expone las propiedades de configuración que pueden personalizarse al nivel de adaptador en la definición de comprobación de seguridad y durante el tiempo de ejecución de MobileFirst Operations Console.

Para facilitar y acelerar el proceso de desarrollo, Mobile Foundation proporciona implementaciones abstractas base de la interfaz de SecurityCheck. Se proporciona una implementación abstracta base de la interfaz de SecurityCheckConfiguration (SecurityCheckConfigurationBase), además de clases de configuración de comprobación de seguridad de muestras complementarias para cada una de las clases de comprobación de seguridad base proporcionadas. Empiece con la implementación de comprobación de seguridad base (y la configuración de muestra relacionada) que mejor se ajuste a sus necesidades de desarrollo y amplíe y modifique la implementación según proceda.

Obtenga más información acerca del contrato de comprobación de seguridad.

Requisitos previos:

Uso:
Las clases base de comprobación de seguridad que se describen a continuación están disponibles como parte de la biblioteca Java Maven de MobileFirst com.ibm.mfp.security.checks.base, y se descargan al crear un adaptador del repositorio central de Maven. Si está desarrollando fuera de línea, puede descargarlas en MobileFirst Operations Console → Centro de descargas → Separador Herramientas → Comprobaciones de seguridad.

Ir a:

Definición de comprobaciones de seguridad

Crear un adaptador Java o JavaScript o utilizar uno existente.

Al crear un adaptador Java, la plantilla predeterminada supone que el adaptador presentará recursos. Es elección del usuario empaquetar comprobaciones de seguridad y recursos en el mismo adaptador o separarlos en adaptadores distintos.

Para eliminar la implementación de recursos predeterminada, suprima los archivos [NombreAdaptador]Application.java y [NombreAdaptador]Resource.java. Elimine también el elemento <JAXRSApplicationClass> en adapter.xml.

En el archivo del adaptador Java adapter.xml, añada un elemento XML llamado securityCheckDefinition. Por ejemplo:

<securityCheckDefinition name="sample" class="com.sample.sampleSecurityCheck">
    <property name="successStateExpirationSec" defaultValue="60"/>
    <property name="blockedStateExpirationSec" defaultValue="60"/>
    <property name="maxAttempts" defaultValue="3"/>
</securityCheckDefinition>
  • El atributo name es el nombre de la comprobación de seguridad.
  • El atributo class especifica la clase de implementación Java de la comprobación de seguridad. Tiene que crear esta clase.
  • Las comprobaciones de seguridad pueden configurarse aún más con una lista de elementos property.
  • Para definir propiedades personalizadas, consulte Configuración de comprobaciones de seguridad.

Después de desplegar correctamente un adaptador con una definición de comprobación de seguridad en MobileFirst Server, también puede ver la comprobación de seguridad y la información de configuración y realizar modificaciones de tiempo de ejecución, en MobileFirst Operations Console → Adaptadores → [su adaptador]:

  • En el separador Archivos de configuración puede ver la copia de su descriptor de adaptador en el servidor, incluido el elemento <securityCheckDefinition> que define su comprobación de seguridad personalizada y sus propiedades configurables. También puede extraer la configuración de adaptador y enviarla a distintos servidores.
  • En el separador Comprobaciones de seguridad puede visualizar una lista de todas las propiedades de configuración que ha expuesto en la definición comprobación de seguridad. El valor del atributo displayName configurado o el valor del nombre de atributo cuando no se ha configurado ningún nombre hacen referencia a las propiedades. Si establece el atributo de descripción de la propiedad en la definición, también se muestra esta descripción. Para cada propiedad, el valor que se configura en el atributo defaultValue se muestra en el valor actual. Puede modificar el valor para sustituir el valor predeterminado de la definición de comprobación de seguridad. Puede restaurar los valores predeterminados de la definición de comprobación de seguridad en cualquier momento.
  • También puede seleccionar la versión de aplicación de la sección Aplicaciones de MobileFirst Operations Console.

Implementación de comprobaciones de seguridad

Cree la clase Java para la comprobación de seguridad. La implementación debería ampliar una de las clases base proporcionadas, tal y como se muestra a continuación. La clase padre que escoja determinará el equilibrio entre la personalización y la simplicidad.

Comprobación de seguridad

SecurityCheck es una **interfaz ** Java que define los métodos necesarios mínimos para representar la comprobación de seguridad.
Es responsabilidad del desarrollador que implementa la verificación de seguridad para manejar cada escenario.

ExternalizableSecurityCheck

Esta clase abstracta implementa una versión básica de la interfaz de comprobación de seguridad.
Proporciona, entre otras opciones: externalización como JSON, tiempo de espera de inactividad, tiempo hasta el vencimiento, etc.

La subclase de esta clase proporciona flexibilidad en la implementación de la comprobación de seguridad.

Obtenga más información en el tutorial ExternalizableSecurityCheck.

CredentialsValidationSecurityCheck

Esta clase amplia ExternalizableSecurityCheck e implementa gran parte de sus métodos para facilitar el uso. Deben implementarse dos métodos: validateCredentials y createChallenge. La implementación permite un número limitado de intentos de inicio de sesión durante un intervalo determinado, después del cual se bloquea la comprobación de seguridad para un período configurado. En caso de que se inicie sesión correctamente, el estado de la comprobación de seguridad sigue siendo satisfactorio para el periodo configurado, durante el cual el usuario puede acceder al recurso solicitado.

La clase CredentialsValidationSecurityCheck está pensada para que los flujos simples validen credenciales arbitrarias, para garantizar el acceso a un recurso. También se proporciona una capacidad incorporada para bloquear el acceso después de que también se proporcione un determinado número de intentos.

Obtenga más información en los tutoriales CredentialsValidationSecurityCheck.

UserAuthenticationSecurityCheck

Esta clase amplia CredentialsValidationSecurityCheck y, por lo tanto, hereda todas sus funciones. La clase le añade una implementación que crea un objeto de identidad de usuario AuthenticatedUser que puede utilizarse para identificar el usuario que ha iniciado sesión. Una capacidad incorporada para permitir que se proporcione, de forma opcional, un comportamiento de inicio de sesión “Recuérdame”. Deben implementarse tres métodos: createUser, validateCredentials, y createChallenge.

Obtenga más información en los tutoriales Comprobación de seguridad UserAuthentication.

Configuración de las comprobaciones de seguridad

Cada clase de implementación de comprobación de seguridad puede utilizar una clase SecurityCheckConfiguration que define las propiedades disponibles para esa comprobación de seguridad. Cada clase base SecurityCheck proporciona una clase SecurityCheckConfiguration correspondiente. Puede crear su propia implementación que amplia una de las clases base SecurityCheckConfiguration y la utiliza para su comprobación de seguridad personalizada.

Por ejemplo, el método createConfiguration de UserAuthenticationSecurityCheck devuelve una instancia de UserAuthenticationSecurityCheckConfig.

public abstract class UserAuthenticationSecurityCheck extends CredentialsValidationSecurityCheck {
  @Override
  public SecurityCheckConfiguration createConfiguration(Properties properties) {
      return new UserAuthenticationSecurityCheckConfig(properties);
  }
}

UserAuthenticationSecurityCheckConfig habilita una propiedad denominada rememberMeDurationSec con un 0 como valor predeterminado.

public class UserAuthenticationSecurityCheckConfig extends CredentialsValidationSecurityCheckConfig {

    public int rememberMeDurationSec;

    public UserAuthenticationSecurityCheckConfig(Properties properties) {
        super(properties);
        rememberMeDurationSec = getIntProperty("rememberMeDurationSec", properties, 0);
    }

}


Estas propiedades pueden configurarse en varios niveles:

adapter.xml

En el archivo adapter.xml del adaptador Java, en <securityCheckDefinition>, puede añadir uno o varios elementos <property>.
El elemento <property> tiene los atributos siguientes:

  • name: El nombre de la propiedad como se define en la clase de configuración.
  • defaultValue: Sustituye el valor predeterminado definido en la clase de configuración.
  • displayName: opcional, un nombre descriptivo que se debe visualizar en la consola.
  • description: opcional, una descripción que se debe visualizar en la consola.
  • type: opcional, asegura que la propiedad es de un tipo específico como, por ejemplo, integer, string, boolean, o una lista de valores válidos (por ejemplo type="['1','2','3']").

Ejemplo:

<property name="maxAttempts" defaultValue="3" displayName="How many attempts are allowed?" type="integer"/>

Para ver un ejemplo real, consulte la sección Configuración de una comprobación de seguridad del tutorial de comprobación de seguridad CredentialsValidation.

MobileFirst Operations Console - Adaptador

En MobileFirst Operations Console → [su adaptador] → separador Comprobación de seguridad, puede modificar el valor de una propiedad definida en el archivo adapter.xml.
Tenga en cuenta que en esta pantalla solo aparecen las propiedades definidas en el archivo adapter.xml; las propiedades definidas en la clase de configuración no aparecen aquí de forma automática.

Adaptador en la consola

También puede editar de forma manual el archivo JSON de configuración del adaptador con la configuración necesaria y enviar los cambios a MobileFirst Server.

  1. Desde una ventana de línea de mandatos, navegue a la carpeta de raíz de proyecto y ejecute la extracción del adaptador mfpdev.
  2. Abra el archivo de configuración ubicado en la carpeta project-folder\mobilefirst.
  3. Edite el archivo y busque el objeto securityCheckDefinitions. En este objeto, busque o cree un objeto que se llame como la comprobación de seguridad que ha seleccionado. En el objeto de comprobaciones de seguridad, busque o añada un objeto de propiedades. Para cada propiedad de configuración disponible que quiera configurar, añada una pareja de propiedad de configuración nombre y valor en el objeto de propiedades. Por ejemplo:

    "securityCheckDefinitions": {
         "UserAuthentication": {
             "properties": {
                 "maxAttempts": "4",
                 "failureExpirationSec: "90"
             }
         }
    }
    
  4. Despliegue el archivo JSON de configuración actualizando ejecutando el mandato: envío de adaptador mfpdev.

MobileFirst Operations Console - Aplicación

Los valores de propiedad también pueden sustituirse a nivel de aplicación.

En MobileFirst Operations Console → [su aplicación] → separador Seguridad, en la sección Configuraciones de comprobación de seguridad, puede modificar los valores definidos en cada comprobación de seguridad disponible.

Configuración de las propiedades de comprobación de seguridad

También puede editar de forma manual el archivo JSON de configuración del adaptador con la configuración necesaria y enviar los cambios a MobileFirst Server.

  1. Desde una ventana de línea de mandatos, navegue a la carpeta de raíz de proyecto y ejecute mfpdev app pull.
  2. Abra el archivo de configuración ubicado en la carpeta project-folder\mobilefirst.
  3. Edite el archivo y busque el objeto securityCheckConfigurations. En este objeto, busque o cree un objeto que se llame como la comprobación de seguridad que ha seleccionado. En el objeto de comprobación de seguridad, añada una pareja de propiedad de configuración nombre valor para cada propiedad de configuración disponible que desee configurar. Por ejemplo:

    "SecurityCheckConfigurations": {
         "UserAuthentication": {
             "properties": {
                 "maxAttempts": "2",
                 "failureExpirationSec: "60"
             }
         }
    }
    
  4. Despliegue el archivo JSON de configuración actualizando ejecutando el mandato: mfpdev app push.

Comprobaciones de seguridad predefinidas

Estas comprobaciones de seguridad predefinidas también están disponibles:

A continuación

Obtenga más información acerca de las comprobaciones de seguridad en los siguientes tutoriales.
Recuerde que debe desplegar el adaptador cuando haya terminado de desarrollar o de realizar cambios.

Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.
Last modified on February 27, 2020