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
- Un usuario desencadena una solicitud de la aplicación cliente al SDK de App ID.
- Si la app todavía no está registrada como cliente móvil, el SDK inicia un flujo de registro dinámico.
- Cuando un registro se realiza correctamente, App ID devuelve el ID de cliente específico de la instalación.
Flujo de autorización
- El SDK de App ID inicia el proceso de autorización utilizando el punto final App ID
/authorization
. - El widget de inicio de sesión se muestra al usuario.
- Mediante uno de los proveedores de identidad configurados, el usuario se autentica.
- App ID devuelve un otorgamiento de autorización.
- 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
-
Cree un proyecto de Android Studio o abra uno ya existente.
-
Añada el repositorio de JitPack a su archivo
build.gradle
raíz.allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
-
Busque el archivo
build.gradle
de la aplicación. Nota: Asegúrese de abrir el archivo para su app, no el archivobuild.gradle
del proyecto.-
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.+' }
-
En la sección
defaultConfig
, configure el esquema de redirección.defaultConfig { ... manifestPlaceholders = ['appIdRedirectScheme': android.defaultConfig.applicationId] }
-
-
Sincronice el proyecto con Gradle. Pulse Tools > Android > Sync Project with Gradle Files.
Inicialización del SDK
-
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.
-
Cree un proyecto de Xcode o abra uno ya existente.
-
Cree un
Podfile
nuevo o abra uno existente en el directorio del proyecto. -
Añada el pod
IBMCloudAppID
y el mandatouse_frameworks!
a las dependencias de su destinotarget '<yourTarget>' do use_frameworks! pod 'IBMCloudAppID' end
-
Instale las dependencias desde la línea de mandatos dentro del directorio del proyecto.
pod install --repo-update
-
Después de la instalación, abra el archivo
{your app}.xcworkspace
que contiene el proyecto Xcode y las dependencias enlazadas -
Habilite la compartición de cadena de claves en el proyecto Xcode. Vaya a Project Settings > Capabilities > Keychain Sharing y seleccione Enable keychain sharing.
-
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
-
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. -
Importe el SDK de App ID al archivo de
AppDelegate
.import IBMCloudAppID
-
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
-
Añada las siguientes importaciones al archivo en el que desea invocar una solicitud de recurso protegido:
import BMSCore import IBMCloudAppID
-
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
-
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;
-
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:
- Configure los proveedores de identidad
- Personalice y configure el widget de inicio de sesión
- Más información Android SDK
- Más información sobre el SDK de iOS Swift