IBM Cloud Docs
Apps móviles

Apps móviles

Con IBM Cloud® App ID, puede construir rápidamente una capa de autenticación para la app para móvil híbrida o nativa.

Comprensión del flujo

Un flujo móvil es útil cuando está desarrollando una app que se va a instalar en un dispositivo de usuario (una aplicación nativa). Al utilizar este flujo, puede autenticar de forma segura a los usuarios de la aplicación para proporcionar experiencias de usuario personalizadas a través de dispositivos.

¿Cuál es la base técnica del flujo?

Puesto que las aplicaciones nativas se instalan directamente en el dispositivo de un usuario, las credenciales de aplicación e información de usuario privadas pueden ser extraídas por terceros fácilmente. De forma predeterminada, este tipo de aplicaciones se conoce como clientes que no son de confianza, puesto que no pueden almacenar credenciales globales o señales para renovación de usuario. Como resultado, los clientes que no son de confianza requieren que los usuarios introduzcan las credenciales cada vez que caduquen las señales de acceso.

Para convertir la aplicación en un cliente de confianza, App ID utiliza Registro de cliente dinámico. Antes de que una instancia de aplicación comience a autenticar usuarios, se registra como cliente de OAuth2 en App ID. Gracias al registro de clientes, su aplicación recibe un ID de cliente específico de la instalación que puede firmarse digitalmente y utilizarse para autorizar solicitudes con App ID. Puesto que App ID almacena la clave pública correspondiente de la aplicación, puede validar la firma de la solicitud que permite que la aplicación se visualice como un cliente confidencial. Este proceso minimiza el riesgo de la aplicación de exponer las credenciales de forma indefinida y mejora la experiencia de usuario permitiendo la actualización automática de la señal.

Tras el registro, los usuarios se autentican utilizando los flujos de concesión de autorizaciones OAuth2 authorization code o resource owner password para autenticar a los usuarios.

Registro de cliente dinámico

  1. Un usuario desencadena una solicitud de la aplicación cliente al SDK de App ID.
  2. Si la app todavía no está registrada como cliente móvil, el SDK inicia un flujo de registro dinámico.
  3. Cuando un registro se realiza correctamente, App ID devuelve el ID de cliente específico de la instalación.

Flujo de autorización

App ID flujo de solicitudes móviles flujo de solicitudes móviles
App ID

  1. El SDK de App ID inicia el proceso de autorización utilizando el punto final App ID /authorization.
  2. El widget de inicio de sesión se muestra al usuario.
  3. Mediante uno de los proveedores de identidad configurados, el usuario se autentica.
  4. App ID devuelve un otorgamiento de autorización.
  5. El otorgamiento de autorización se intercambia para las señales de renovación, identidad y acceso del punto final App ID /token.

Configuración de una app móvil con los SDK de App ID

Empiece con los SDK de App ID.

Antes de empezar

Necesita la siguiente información:

  • Una instancia de App ID

  • El ID de arrendatario de la instancia. Lo encontrará en el separador Credenciales de servicio del panel de control de servicio.

  • La región de IBM Cloud de despliegue de su instancia. Encontrará la región buscando en la consola.

    IBM Cloud regiones y valores SDK correspondientes
    Región IBM Cloud Valor de SDK
    EE.UU. sur AppID.REGION_US_SOUTH
    Sydney AppID.REGION_SYDNEY
    Reino Unido AppID.REGION_UK
    Alemania AppID.REGION_GERMANY

Autenticación con el SDK de Android

Proteja las aplicaciones móviles utilizando el SDK de cliente de App ID.

Antes de empezar

Debe tener los siguientes requisitos previos antes de poder empezar:

  • API 27 o superior
  • Java 8.x
  • Android SDK Tools 26.1.1+
  • Android SDK Platform Tools 27.0.1+
  • Android Build Tools versión 27.0.0+

Instalación del SDK

  1. Cree un proyecto de Android Studio o abra uno ya existente.

  2. Añada el repositorio de JitPack a su archivo build.gradle raíz.

       allprojects {
          repositories {
             ...
             maven { url 'https://jitpack.io' }
          }
       }
    
  3. Busque el archivo build.gradle de la aplicación. Nota: Asegúrese de abrir el archivo para su app, no el archivo build.gradle del proyecto.

    1. Añada el SDK de cliente de App ID a la sección de dependencias.

      dependencies {
         compile group: 'com.github.ibm-cloud-security:appid-clientsdk-android:4.+'
      }
      
    2. En la sección defaultConfig, configure el esquema de redirección.

      defaultConfig {
      ...
      manifestPlaceholders = ['appIdRedirectScheme': android.defaultConfig.applicationId]
      }
      
  4. Sincronice el proyecto con Gradle. Pulse Tools > Android > Sync Project with Gradle Files.


Inicialización del SDK

  1. Pase los parámetros de contexto, ID de arrendatario y región al método de initialize para configurar el SDK.

    Un lugar habitual, pero no obligatorio, donde poner el código de inicialización es en el método onCreate de la actividad principal de la aplicación de Android.

    AppID.getInstance().initialize(getApplicationContext(), <tenantID>, <region>);
    

Autenticación con el SDK de Swift de iOS

Proteja las aplicaciones móviles utilizando el SDK de cliente de App ID.

Antes de empezar

Debe tener los siguientes requisitos previos antes de empezar:

  • Xcode 9.0 o superior
  • CocoaPods 1.1.0 o superior
  • iOS 10.0 o posterior

Instalación del SDK

El SDK del cliente de App ID se distribuye con CocoaPods, un gestor de dependencias para proyectos de Swift y de Objective-C Cocoa. CocoaPods descarga artefactos, y los pone a disposición de su proyecto.

  1. Cree un proyecto de Xcode o abra uno ya existente.

  2. Cree un Podfile nuevo o abra uno existente en el directorio del proyecto.

  3. Añada el pod IBMCloudAppID y el mandato use_frameworks! a las dependencias de su destino

    target '<yourTarget>' do
       use_frameworks!
       pod 'IBMCloudAppID'
    end
    
  4. Instale las dependencias desde la línea de mandatos dentro del directorio del proyecto.

    pod install --repo-update
    
  5. Después de la instalación, abra el archivo {your app}.xcworkspace que contiene el proyecto Xcode y las dependencias enlazadas

  6. Habilite la compartición de cadena de claves en el proyecto Xcode. Vaya a Project Settings > Capabilities > Keychain Sharing y seleccione Enable keychain sharing.

  7. Abra Project Settings > Info > URL Types, y añada un URL Type. Coloque el valor siguiente en los recuadros de texto Identificador y Esquema de URL.

    (PRODUCT_BUNDLE_IDENTIFIER)
    

Inicialización del SDK

  1. Inicialice el SDK del cliente pasando los parámetros de ID de arrendatario y region al método initialize.

       AppID.sharedInstance.initialize(tenantId: <tenantID>, region: <region>)
    

    Un lugar habitual, pero no obligatorio, donde poner el código de inicialización es en el método application:didFinishLaunchingWithOptions: del AppDelegate de la aplicación Swift.

  2. Importe el SDK de App ID al archivo de AppDelegate.

    import IBMCloudAppID
    
  3. Configure la aplicación para que procese las redirecciones a través de App ID.

    func application(_ application: UIApplication, open url: URL, options :[UIApplication.OpenURLOptionsKey : Any]) -> Bool {
          return AppID.sharedInstance.application(application, open: url, options: options)
       }
    

Acceso a API protegidas

Después de que el flujo de inicio de sesión se haya realizado correctamente, puede utilizar las señales de identidad y acceso para invocar los recursos que utilizan el SDK o la biblioteca de red de su elección.

Con el SDK de Swift

  1. Añada las siguientes importaciones al archivo en el que desea invocar una solicitud de recurso protegido:

    import BMSCore
    import IBMCloudAppID
    
  2. Invoque el recurso protegido

    BMSClient.sharedInstance.initialize(region: <region>)
    BMSClient.sharedInstance.authorizationManager = AppIDAuthorizationManager(appid: AppID.sharedInstance)
    let request =  Request(url: "{your protected resource url}")
    request.send { (response: Response?, error: Error?) in
       guard let response = response, error == null else {
             print("An error occurred invoking a protected resources", error?.localizedDescription ?? "No response was received")
             return;
       }
       // use your response object
    })
    

Con el SDK de Android

  1. Añada las siguientes importaciones al archivo en el que desea invocar una solicitud de recurso protegido:

    import com.ibm.mobilefirstplatform.clientsdk.android.core.api.BMSClient;
    import com.ibm.cloud.appid.android.api.AppIDAuthorizationManager;
    
  2. Invoque el recurso protegido

    BMSClient bmsClient = BMSClient.getInstance();
    bmsClient.initialize(getApplicationContext(), <region>);
    AppIDAuthorizationManager appIdAuthMgr = new AppIDAuthorizationManager(AppID.getInstance())
    bmsClient.setAuthorizationManager(appIdAuthMgr);
    Request request = new Request("{your protected resource url}", Request.GET);
    request.send(this, new ResponseListener() {
    @Override
    public void onSuccess (Response response) {
          Log.d("My app", "onSuccess :: " + response.getResponseText());
    }
    @Override
    public void onFailure (Response response, Throwable t, JSONObject extendedInfo) {
          if (null != t) {
             Log.d("My app", "onFailure :: " + t.getMessage());
          } else if (null != extendedInfo) {
             Log.d("My app", "onFailure :: " + extendedInfo.toString());
          } else {
             Log.d("My app", "onFailure :: " + response.getResponseText());
             }
          }
    });
    

Sin un SDK

Con la biblioteca que desee, establezca la cabecera de solicitud Authorization de modo que utilice el esquema de autenticación Bearer para transmitir la señal de acceso.

Ejemplo de formato de la solicitud:

GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <accessToken> <optionalIdentityToken>

Próximos pasos

Con App ID instalado en la aplicación, casi está listo para iniciar la autenticación de usuarios. A continuación, intente realizar una de las siguientes actividades: