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
- Un utente attiva una richiesta da parte dell'applicazione client al App ID SDK.
- Se la tua applicazione non è registrata ancora come un client mobile, l'SDK avvia un flusso di registrazione dinamica.
- Dopo una corretta registrazione, App ID restituisce il tuo ID client specifico per l'installazione.
Flusso di autorizzazione
- L'SDK App ID avvia il processo di autorizzazione utilizzando l'endpoint App ID
/authorization
. - Il widget di accesso viene visualizzato all'utente.
- L'utente si autentica utilizzando uno dei provider di identità configurati.
- App ID restituisce una concessione di autorizzazione.
- 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
-
Crea un progetto Android Studio oppure apri un progetto esistente.
-
Aggiungi JitPack al tuo file
build.gradle
della root.allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
-
Trova il file
build.gradle
della tua applicazione. Nota: assicurati di aprire il file per la tua applicazione, non il filebuild.gradle
del progetto.-
Aggiungi l'SDK client App ID alla sezione delle dipendenze.
dependencies { compile group: 'com.github.ibm-cloud-security:appid-clientsdk-android:4.+' }
-
Nella sezione
defaultConfig
, configura lo schema di reindirizzamento.defaultConfig { ... manifestPlaceholders = ['appIdRedirectScheme': android.defaultConfig.applicationId] }
-
-
Sincronizza il tuo progetto con Gradle. Fai clic su Tools > Android > Sync Project with Gradle Files.
Inizializzazione dell'SDK
-
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.
-
Crea un progetto Xcode oppure aprine uno esistente.
-
Crea un nuovo
Podfile
o aprine uno esistente nella directory del progetto. -
Aggiungi il pod
IBMCloudAppID
e il comandouse_frameworks!
alle dipendenze della tua destinazione.target '<yourTarget>' do use_frameworks! pod 'IBMCloudAppID' end
-
Installa le tue dipendenze dalla riga di comando all'interno della tua directory del progetto.
pod install --repo-update
-
Dopo l'installazione, aprire il file
{your app}.xcworkspace
che contiene il progetto Xcode e le dipendenze collegate -
Abilita la condivisione keychain nel progetto Xcode. Passa a Project Settings > Capabilities > Keychain Sharing e seleziona Enable keychain sharing.
-
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
-
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. -
Importa l'SDK App ID nel tuo file
AppDelegate
.import IBMCloudAppID
-
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
-
Aggiungi le seguenti importazioni al file in cui vuoi richiamare una richiesta della risorsa protetta:
import BMSCore import IBMCloudAppID
-
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
-
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;
-
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à:
- Configura i tuoi provider di identità
- Personalizza e configura il widget di accesso
- Per saperne di più sul Android SDK
- Scopri di più sull'SDK Swift iOS