IBM Cloud Docs
Applications mobiles

Applications mobiles

Avec IBM Cloud® App ID, vous pouvez rapidement construire une couche d'authentification pour votre application mobile native ou hybride.

Comprendre le flux

Un flux mobile est utile lorsque vous développez une application qui doit être installée sur le périphérique d'un utilisateur (application native). En utilisant ce flux, vous pouvez authentifier les utilisateurs en toute sécurité sur votre application afin de fournir des expériences utilisateur personnalisées sur les périphériques.

Quelle est la base technique du flux ?

Les applications natives étant installées directement sur le périphérique d'un utilisateur, les informations personnelles de l'utilisateur et les droits d'accès de l'application peuvent être extraits par des tiers avec une relative facilité. Par défaut, ces types d'applications sont appelés clients non approuvés, car ils ne peuvent pas stocker de données d'identification globales ou de jetons d'actualisation des utilisateurs. C'est pourquoi les clients non approuvés exigent des utilisateurs qu'ils entrent leurs données d'identification chaque fois que leurs jetons d'accès expirent.

Pour convertir votre application en client sécurisé, App ID utilise Enregistrement dynamique des clients. Avant qu'une instance d'application puisse commencer à authentifier des utilisateurs, elle doit tout d'abord s'enregistrer en tant que client OAuth2 auprès d'App ID. Grâce à l'enregistrement du client, votre application reçoit un identifiant de client spécifique à l'installation qui peut être signé numériquement et utilisé pour autoriser les requêtes avec App ID Comme App ID enregistre la clé publique correspondant à votre application, il peut valider la signature de votre demande qui permet à votre application d'être affichée en tant que client confidentiel. Ce processus réduit le risque d'exposer indéfiniment les données d'identification de votre application et améliore considérablement l'expérience utilisateur en permettant l'actualisation automatique du jeton.

Après l'enregistrement, vos utilisateurs s'authentifient en utilisant les flux d'autorisation OAuth2 authorization code ou resource owner password pour authentifier les utilisateurs.

Enregistrement dynamique du client

  1. Un utilisateur déclenche une demande de l'application client au SDK App ID.
  2. Si votre application n'est pas encore enregistrée en tant que client mobile, le logiciel SDK lance un flux d'enregistrement dynamique.
  3. Lorsque l'enregistrement a abouti, App ID renvoie un IC client spécifique à votre installation.

Flux d'autorisation

App ID mobile request flow
App ID mobile request flow

  1. App ID SDK démarre le processus d'autorisation à l'aide du nœud final App ID /authorization.
  2. Le widget de connexion est affiché pour l'utilisateur.
  3. L'utilisateur s'authentifie à l'aide de l'un des fournisseurs d'identité configurés.
  4. App ID renvoie un octroi d'autorisation.
  5. L'octroi d'autorisation est échangé contre des jetons d'accès, d'identité et d'actualisation à partir du noeud final App ID /token.

Configuration de votre application mobile avec les logiciels SDK App ID

Mise en route avec les SDK App ID .

Avant de commencer

Vous devez disposer des éléments suivants :

  • Une instance App ID

  • L'ID titulaire de votre instance. Il est disponible dans l'onglet Données d'identification pour le service de votre tableau de bord du service.

  • La région IBM Cloud de déploiement de votre instance. Consultez la console pour connaître votre région.

    régionsIBM Cloud et valeurs SDK correspondantes
    Région IBM Cloud Valeur de logiciel SDK
    Sud des Etats-Unis AppID.REGION_US_SOUTH
    Sydney AppID.REGION_SYDNEY
    Royaume-uni AppID.REGION_UK
    Allemagne AppID.REGION_GERMANY

Authentification avec le logiciel SDK Android

Protégez vos applications mobiles à l'aide du SDK du client App ID.

Avant de commencer

Les éléments suivants sont prérequis pour pouvoir commencer :

  • API version 27 ou ultérieure
  • Java 8.x
  • Android SDK Tools 26.1.1+
  • Android SDK Platform Tools 27.0.1+
  • Android Build Tools version 27.0.0+

Installation du kit SDK

  1. Créez un projet Android Studio ou ouvrez un projet existant.

  2. Ajoutez le référentiel JitPack à votre fichier racine build.gradle.

       allprojects {
          repositories {
             ...
             maven { url 'https://jitpack.io' }
          }
       }
    
  3. Recherchez le fichier build.gradle de votre application. Remarque : assurez-vous d'ouvrir le fichier correspondant à votre application et non pas le fichier build.gradle du projet.

    1. Ajoutez le logiciel SDK client App ID à la section des dépendances.

      dependencies {
         compile group: 'com.github.ibm-cloud-security:appid-clientsdk-android:4.+'
      }
      
    2. Dans la section defaultConfig, configurez le schéma de redirection.

      defaultConfig {
      ...
      manifestPlaceholders = ['appIdRedirectScheme': android.defaultConfig.applicationId]
      }
      
  4. Synchronisez votre projet avec Gradle. Cliquez sur Tools > Android > Sync Project with Gradle Files.


Initialisation du logiciel SDK

  1. Transmettez les paramètres de contexte, d'ID titulaire et de région à la méthode initialize pour configurer le logiciel SDK.

    En général, vous pouvez placer le code d'initialisation dans la méthode onCreate de l'activité principale dans votre application Android, bien que cet emplacement ne soit pas obligatoire.

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

Authentification avec le logiciel SDK Swift iOS

Protégez vos applications mobiles à l'aide du SDK du client App ID.

Avant de commencer

Avant de commencer, vous devez avoir les prérequis suivants :

  • Xcode version 9.0 ou ultérieure
  • CocoaPods version 1.1.0 ou ultérieure
  • iOS 10.0 ou version ultérieure

Installation du kit SDK

Le logiciel SDK client d'App ID est distribué avec CocoaPods, un gestionnaire de dépendances pour les projets Swift et Cocoa Objective-C . CocoaPods télécharge des artefacts et les rend disponibles dans votre projet.

  1. Créez un projet Xcode ou ouvrez un projet existant.

  2. Créez un fichier Podfile ou ouvrez-en un existant dans le répertoire de projet.

  3. Ajoutez la commande IBMCloudAppID et le pod use_frameworks! aux dépendances de votre cible

    target '<yourTarget>' do
       use_frameworks!
       pod 'IBMCloudAppID'
    end
    
  4. Installez vos dépendances à partir de la ligne de commande dans le répertoire de votre projet.

    pod install --repo-update
    
  5. Après l'installation, ouvrez le fichier {your app}.xcworkspace qui contient votre projet Xcode et les dépendances liées.

  6. Activez le partage de la chaîne de certificats dans votre projet Xcode. Accédez à Paramètres du projet > Capacités > Partage de chaîne de certificats et sélectionnez l'option d'activation du partage de chaîne de certificats.

  7. Ouvrez Paramètres du projet > Information > Types d'URL et ajoutez un Type d'URL. Indiquez la valeur suivante dans les zones de texte Identificateur et Schéma d'URL :

    (PRODUCT_BUNDLE_IDENTIFIER)
    

Initialisation du logiciel SDK

  1. Initialisez le logiciel SDK client en transmettant les paramètres d'ID titulaire et de région à sa méthode initialize.

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

    Bien que ce ne soit pas obligatoire, le code d'initialisation est souvent placé dans la méthode application:didFinishLaunchingWithOptions du fichier AppDelegate de votre application Swift.

  2. Importez le logiciel SDK App ID dans votre fichier AppDelegate.

    import IBMCloudAppID
    
  3. Configurez votre application pour traiter les redirections via App ID.

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

Accès aux API protégées

Lorsque le flux de connexion a abouti, vous pouvez utiliser vos jetons d'accès et d'identité pour appeler des ressources d'arrière-plan protégées qui utilisent le logiciel SDK ou une bibliothèque réseau de votre choix.

Avec le logiciel SDK Swift

  1. Ajoutez les importations suivantes au fichier dans lequel vous souhaitez appeler une demande de ressource protégée :

    import BMSCore
    import IBMCloudAppID
    
  2. Appelez votre ressource protégée.

    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
    })
    

Avec le logiciel SDK Android

  1. Ajoutez les importations suivantes au fichier dans lequel vous souhaitez appeler une demande de ressource protégée :

    import com.ibm.mobilefirstplatform.clientsdk.android.core.api.BMSClient;
    import com.ibm.cloud.appid.android.api.AppIDAuthorizationManager;
    
  2. Appelez votre ressource protégée.

    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());
             }
          }
    });
    

Sans logiciel SDK

Avec la bibliothèque de votre choix, configurez votre en-tête de demande Authorization pour utiliser le schéma d'authentification Bearer pour transmettre le jeton d'accès.

Exemple de format de demande :

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

Etapes suivantes

App ID est installé dans votre application ? Vous êtes pratiquement prêt à commencer l'authentification des utilisateurs ! Essayez d'effectuer l'une des activités suivantes :