IBM Cloud Docs
App mobili

App mobili

Con IBM Cloud® App ID, puoi velocemente costruire un livello di autenticazione per la tua applicazione mobile nativa o ibrida.

Descrizione del flusso

Un flusso mobile è utile quando stai sviluppando un'applicazione che deve essere installata sul dispositivo di un utente (un'applicazione nativa). Utilizzando questo flusso, è possibile autenticare in modo sicuro gli utenti sulla propria app per fornire esperienze personalizzate su tutti i dispositivi.

Qual è la base tecnica del flusso?

Poiché le applicazioni native sono installate direttamente sul dispositivo di un utente, le informazioni sull'utente private e le credenziali dell'applicazione possono essere estratte da terze parti con relativa facilità. Per impostazione predefinita, questi tipi di applicazioni sono noti come client non attendibili perché non possono archiviare le credenziali globali o i token di aggiornamento dell'utente. Di conseguenza, i client non attendibili richiedono agli utenti di immettere le proprie credenziali ogni volta che scadono i loro token di accesso.

Per convertire l'applicazione in un client attendibile, App ID utilizza Dynamic Client Registration. Prima che un'istanza di applicazione inizi ad autenticare gli utenti, si registra come client OAuth2 con App ID. Grazie alla registrazione del client, l'applicazione riceve un ID client specifico dell'installazione che può essere firmato digitalmente e utilizzato per autorizzare le richieste con App ID. Poiché App ID archivia la chiave pubblica corrispondente della tua applicazione, può convalidare la tua firma della richiesta che consente alla tua applicazione di essere visualizzata come un client riservato. Questo processo riduce il rischio che la tua applicazione esponga le credenziali indefinitamente e migliora notevolmente l'esperienza utente consentendo l'aggiornamento del token automatico.

Dopo la registrazione, gli utenti si autenticano utilizzando i flussi di autorizzazione OAuth2 authorization code o resource owner password per l'autenticazione degli utenti.

Registrazione client dinamica

  1. Un utente attiva una richiesta da parte dell'applicazione client al App ID SDK.
  2. Se la tua applicazione non è registrata ancora come un client mobile, l'SDK avvia un flusso di registrazione dinamica.
  3. Dopo una corretta registrazione, App ID restituisce il tuo ID client specifico per l'installazione.

Flusso di autorizzazione

App ID flusso di richiesta mobile flusso di richiesta mobile
App ID

  1. L'SDK App ID avvia il processo di autorizzazione utilizzando l'endpoint App ID /authorization.
  2. Il widget di accesso viene visualizzato all'utente.
  3. L'utente si autentica utilizzando uno dei provider di identità configurati.
  4. App ID restituisce una concessione di autorizzazione.
  5. La concessione di autorizzazione viene scambiata con i token di accesso, identità e aggiornamento dall'endpoint App ID /token.

Configurazione della tua applicazione mobile con gli SDK App ID

Inizia con gli SDK App ID.

Prima di iniziare

Hai bisogno delle seguenti informazioni:

  • Un'istanza App ID

  • L'ID tenant della tua istanza. Può essere trovato nella scheda Service Credentials del tuo dashboard del servizio.

  • La regione IBM Cloud di distribuzione della tua istanza. Puoi trovare la tua regione cercando nella console.

    regioniIBM Cloud e valori SDK corrispondenti
    Regione IBM Cloud Valore SDK
    Stati Uniti Sud AppID.REGION_US_SOUTH
    Sydney AppID.REGION_SYDNEY
    Regno Unito AppID.REGION_UK
    Germania AppID.REGION_GERMANY

Autenticazione con l'SDK Android

Proteggete le vostre applicazioni mobili utilizzando l'SDK del client App ID.

Prima di iniziare

Devi avere i seguenti prerequisiti prima di poter iniziare:

  • API 27 o superiore
  • Java 8.x
  • Strumenti SDK Android 26.1.1+
  • Strumenti piattaforma SDK Android 27.0.1+
  • Strumenti di build Android versione 27.0.0+

Installazione dell'SDK

  1. Crea un progetto Android Studio oppure apri un progetto esistente.

  2. Aggiungi JitPack al tuo file build.gradle della root.

       allprojects {
          repositories {
             ...
             maven { url 'https://jitpack.io' }
          }
       }
    
  3. Trova il file build.gradle della tua applicazione. Nota: assicurati di aprire il file per la tua applicazione, non il file build.gradle del progetto.

    1. Aggiungi l'SDK client App ID alla sezione delle dipendenze.

      dependencies {
         compile group: 'com.github.ibm-cloud-security:appid-clientsdk-android:4.+'
      }
      
    2. Nella sezione defaultConfig, configura lo schema di reindirizzamento.

      defaultConfig {
      ...
      manifestPlaceholders = ['appIdRedirectScheme': android.defaultConfig.applicationId]
      }
      
  4. Sincronizza il tuo progetto con Gradle. Fai clic su Tools > Android > Sync Project with Gradle Files.


Inizializzazione dell'SDK

  1. Passa i parametri contesto, ID tenant e regione al metodo di inizializzazione per configurare l'SDK.

    Un punto comune, seppure non obbligatorio, dove inserire il codice di inizializzazione è nel metodo onCreate dell'attività principale nella tua applicazione Android.

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

Autenticazione con l'SDK iOS Swift

Proteggete le vostre applicazioni mobili utilizzando l'SDK del client App ID.

Prima di iniziare

Prima di iniziare è necessario disporre dei seguenti prerequisiti:

  • Xcode 9.0 o superiore
  • CocoaPods 1.1.0 o superiore
  • iOS 10.0 o superiore

Installazione dell'SDK

L'SDK client App ID è distribuito con CocoaPods, un gestore dipendenze per i progetti Swift e Objective-C Cocoa. CocoaPods scarica le risorse utente e le rende disponibili al tuo progetto.

  1. Crea un progetto Xcode oppure aprine uno esistente.

  2. Crea un nuovo Podfile o aprine uno esistente nella directory del progetto.

  3. Aggiungi il pod IBMCloudAppID e il comando use_frameworks! alle dipendenze della tua destinazione.

    target '<yourTarget>' do
       use_frameworks!
       pod 'IBMCloudAppID'
    end
    
  4. Installa le tue dipendenze dalla riga di comando all'interno della tua directory del progetto.

    pod install --repo-update
    
  5. Dopo l'installazione, aprire il file {your app}.xcworkspace che contiene il progetto Xcode e le dipendenze collegate

  6. Abilita la condivisione keychain nel progetto Xcode. Passa a Project Settings > Capabilities > Keychain Sharing e seleziona Enable keychain sharing.

  7. Apri Project Settings > Info > URL Types e aggiungi un URL Type. Inserisci il seguente valore in entrambe le caselle di testo Identifier e URL Scheme.

    (PRODUCT_BUNDLE_IDENTIFIER)
    

Inizializzazione dell'SDK

  1. Inizializza l'SDK client passando i parametri ID tenant e regione al metodo di inizializzazione.

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

    Un punto comune, seppure non obbligatorio, dove inserire il codice di inizializzazione è nel metodo application:didFinishLaunchingWithOptions del file AppDelegate della tua applicazione Swift.

  2. Importa l'SDK App ID nel tuo file AppDelegate.

    import IBMCloudAppID
    
  3. Configura la tua applicazione per elaborare i reindirizzamenti tramite App ID.

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

Accesso alle API protette

Dopo un flusso di accesso corretto, puoi utilizzare i tuoi token di accesso e identità per richiamare le risorse di backend protette che utilizzano l'SDK o una libreria di rete di tua scelta.

Con l'SDK Swift

  1. Aggiungi le seguenti importazioni al file in cui vuoi richiamare una richiesta della risorsa protetta:

    import BMSCore
    import IBMCloudAppID
    
  2. Richiama la tua risorsa protetta

    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 il Android SDK

  1. Aggiungi le seguenti importazioni al file in cui vuoi richiamare una richiesta della risorsa protetta:

    import com.ibm.mobilefirstplatform.clientsdk.android.core.api.BMSClient;
    import com.ibm.cloud.appid.android.api.AppIDAuthorizationManager;
    
  2. Richiama la tua risorsa protetta

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

Senza un SDK

Con la libreria scelta, impostare l'intestazione della richiesta Authorization per utilizzare lo schema di autenticazione Bearer per trasmettere il token di accesso.

Formato della richiesta di esempio:

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

Passi successivi

Con App ID installato nella tua applicazione, sei quasi pronto ad iniziare ad autenticare gli utenti. Prova ad eseguire una delle seguenti attività: