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
- Un utilisateur déclenche une demande de l'application client au SDK App ID.
- Si votre application n'est pas encore enregistrée en tant que client mobile, le logiciel SDK lance un flux d'enregistrement dynamique.
- Lorsque l'enregistrement a abouti, App ID renvoie un IC client spécifique à votre installation.
Flux d'autorisation
- App ID SDK démarre le processus d'autorisation à l'aide du nœud final App ID
/authorization
. - Le widget de connexion est affiché pour l'utilisateur.
- L'utilisateur s'authentifie à l'aide de l'un des fournisseurs d'identité configurés.
- App ID renvoie un octroi d'autorisation.
- 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
-
Créez un projet Android Studio ou ouvrez un projet existant.
-
Ajoutez le référentiel JitPack à votre fichier racine
build.gradle
.allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
-
Recherchez le fichier
build.gradle
de votre application. Remarque : assurez-vous d'ouvrir le fichier correspondant à votre application et non pas le fichierbuild.gradle
du projet.-
Ajoutez le logiciel SDK client App ID à la section des dépendances.
dependencies { compile group: 'com.github.ibm-cloud-security:appid-clientsdk-android:4.+' }
-
Dans la section
defaultConfig
, configurez le schéma de redirection.defaultConfig { ... manifestPlaceholders = ['appIdRedirectScheme': android.defaultConfig.applicationId] }
-
-
Synchronisez votre projet avec Gradle. Cliquez sur Tools > Android > Sync Project with Gradle Files.
Initialisation du logiciel SDK
-
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.
-
Créez un projet Xcode ou ouvrez un projet existant.
-
Créez un fichier
Podfile
ou ouvrez-en un existant dans le répertoire de projet. -
Ajoutez la commande
IBMCloudAppID
et le poduse_frameworks!
aux dépendances de votre cibletarget '<yourTarget>' do use_frameworks! pod 'IBMCloudAppID' end
-
Installez vos dépendances à partir de la ligne de commande dans le répertoire de votre projet.
pod install --repo-update
-
Après l'installation, ouvrez le fichier
{your app}.xcworkspace
qui contient votre projet Xcode et les dépendances liées. -
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.
-
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
-
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. -
Importez le logiciel SDK App ID dans votre fichier
AppDelegate
.import IBMCloudAppID
-
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
-
Ajoutez les importations suivantes au fichier dans lequel vous souhaitez appeler une demande de ressource protégée :
import BMSCore import IBMCloudAppID
-
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
-
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;
-
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 :
- Configurer vos fournisseurs d'identité
- Personnaliser et configurer le widget de connexion
- En savoir plus sur le Android SDK
- En savoir plus sur le SDK Swift pouriOS