Aggiungere informazioni di accesso a un'app Android usando una libreria di terze parti con l'API Graph mediante l'endpoint v2.0Add sign-in to an Android app using a third-party library with Graph API using the v2.0 endpoint

La piattaforma delle identità Microsoft usa standard aperti, ad esempio OAuth2 e OpenID Connect.The Microsoft identity platform uses open standards such as OAuth2 and OpenID Connect. Gli sviluppatori possono usare qualsiasi libreria che desiderano integrare ai servizi.Developers can use any library they want to integrate with our services. Per aiutare gli sviluppatori a usare la piattaforma con altre librerie, sono state scritte alcune procedure dettagliate come questa, che illustrano come configurare le librerie di terze parti per connettersi alla piattaforma delle identità Microsoft.To help developers use our platform with other libraries, we've written a few walkthroughs like this one to demonstrate how to configure third-party libraries to connect to the Microsoft identity platform. La maggior parte delle librerie che implementano la specifica OAuth2 RFC6749 possono connettersi alla piattaforma delle identità Microsoft.Most libraries that implement the RFC6749 OAuth2 spec can connect to the Microsoft identity platform.

Con l'applicazione creata in questa procedura dettagliata, gli utenti possono accedere alla propria organizzazione e cercare in modo indipendente all'interno dell'organizzazione tramite l'API Graph.With the application that this walkthrough creates, users can sign in to their organization and then search for themselves in their organization by using the Graph API.

Se non si ha familiarità con OAuth2 o OpenID Connect, gran parte di questo esempio risulterà poco chiara.If you're new to OAuth2 or OpenID Connect, much of this sample configuration may not make sense to you. Per approfondimenti, è consigliabile leggere Protocolli della versione 2.0: flusso del codice di autorizzazione di OAuth 2.0.We recommend that you read 2.0 Protocols - OAuth 2.0 Authorization Code Flow for background.

Nota

Per alcune funzionalità della piattaforma che trovano espressione negli standard OAuth2 o OpenID Connect, ad esempio l'accesso condizionale e la gestione criteri di Intune, è necessario usare le librerie di identità open source di Microsoft Azure.Some features of our platform that do have an expression in the OAuth2 or OpenID Connect standards, such as Conditional Access and Intune policy management, require you to use our open source Microsoft Azure Identity Libraries.

Non tutti gli scenari e le funzionalità di Azure Active Directory sono supportati dall'endpoint v2.0.The v2.0 endpoint does not support all Azure Active Directory scenarios and features.

Nota

Per determinare se è necessario usare l'endpoint v2.0, leggere le informazioni sulle limitazioni v2.0.To determine if you should use the v2.0 endpoint, read about v2.0 limitations.

Scaricare il codice da GitHubDownload the code from GitHub

Il codice per questa esercitazione è salvato su GitHub.The code for this tutorial is maintained on GitHub. Per seguire la procedura è possibile scaricare la struttura dell'app come file con estensione zip o clonare la struttura:To follow along, you can download the app's skeleton as a .zip or clone the skeleton:

git clone --branch skeleton git@github.com:Azure-Samples/active-directory-android-native-oidcandroidlib-v2.git

È anche possibile scaricare l'esempio e iniziare subito:You can also just download the sample and get started right away:

git@github.com:Azure-Samples/active-directory-android-native-oidcandroidlib-v2.git

Registrare un'appRegister an app

Creare una nuova app nel portale di registrazione delle applicazioni o seguire la procedura riportata in Come registrare un'app con l'endpoint v2.0.Create a new app at the Application registration portal, or follow the detailed steps at How to register an app with the v2.0 endpoint. Verificare di:Make sure to:

  • Copiare l' ID applicazione assegnato all'app, perché verrà richiesto a breve.Copy the Application Id that's assigned to your app because you'll need it soon.
  • Aggiungere la piattaforma Mobile per l'app.Add the Mobile platform for your app.

Nota: il portale di registrazione delle applicazioni offre un valore per URI di reindirizzamento .Note: The Application registration portal provides a Redirect URI value. In questo esempio, tuttavia, è necessario usare il valore predefinito https://login.microsoftonline.com/common/oauth2/nativeclient.However, in this example you must use the default value of https://login.microsoftonline.com/common/oauth2/nativeclient.

Scaricare la libreria di terze parti NXOAuth2 e creare un'area di lavoroDownload the NXOAuth2 third-party library and create a workspace

Per questa procedura dettagliata si userà OIDCAndroidLib da GitHub, una libreria OAuth2 basata sul codice OpenID Connect di Google.For this walkthrough, you will use the OIDCAndroidLib from GitHub, which is an OAuth2 library based on the OpenID Connect code of Google. Questa libreria implementa il profilo dell'applicazione nativa e supporta l'endpoint di autorizzazione dell'utente.It implements the native application profile and supports the authorization endpoint of the user. Ecco tutto ciò che serve per l'integrazione con la piattaforma delle identità di Microsoft.These are all the things that you'll need to integrate with the Microsoft identity platform.

Clonare il repository OIDCAndroidLib sul computer.Clone the OIDCAndroidLib repo to your computer.

git@github.com:kalemontes/OIDCAndroidLib.git

Android Studio

Configurare l'ambiente Android StudioSet up your Android Studio environment

  1. Creare un nuovo progetto Android Studio e accettare le impostazioni predefinite nella procedura guidata.Create a new Android Studio project and accept the defaults in the wizard.

    Creare un nuovo progetto in Android Studio

    Target Android devices (Dispositivi Android di destinazione)

    Aggiungere un'attività a un dispositivo mobile

  2. Per impostare i moduli del progetto, spostare il repository clonato nel percorso del progetto.To set up your project modules, move the cloned repo to the project location. È anche possibile creare il progetto e clonarlo direttamente nel percorso del progetto.You can also create the project and then clone it directly to the project location.

    Moduli del progetto

  3. Aprire le impostazioni dei moduli del progetto tramite il menu di scelta rapida o tramite la combinazione di tasti Ctrl+Alt+Maj+S.Open the project modules settings by using the context menu or by using the Ctrl+Alt+Maj+S shortcut.

    Impostazioni dei moduli del progetto

  4. Dal momento che sono necessarie solo le impostazioni del contenitore del progetto, rimuovere il modulo dell'app predefinito.Remove the default app module because you only want the project container settings.

    Modulo predefinito dell'app

  5. Importare i moduli dal repository clonato al progetto corrente.Import modules from the cloned repo to the current project.

    Importare il progetto gradle Creare una nuova pagina del moduloImport gradle project Create new module page

  6. Ripetere questi passaggi per il modulo oidlib-sample .Repeat these steps for the oidlib-sample module.
  7. Controllare le dipendenze di oidclib del modulo oidlib-sample .Check the oidclib dependencies on the oidlib-sample module.

    Dipendenze oidclib sul modulo oidlib di esempio

  8. Fare clic su OK e attendere la sincronizzazione di Gradle.Click OK and wait for gradle sync.

    Il file settings.gradle sarà simile al seguente:Your settings.gradle should look like:

    Schermata di settings.gradle

  9. Compilare l'app di esempio per verificare che l'esempio venga eseguito correttamente.Build the sample app to make sure that the sample running correctly.

    Non sarà ancora possibile usarlo con Azure Active Directory.You won't be able to use this with Azure Active Directory yet. Prima è necessario configurare alcuni endpointWe'll need to configure some endpoints first. per assicurarsi di non avere problemi con Android Studio prima di iniziare a personalizzare l'app di esempio.This is to ensure you don't have an Android Studio issues before we start customizing the sample app.

  10. Compilare ed eseguire oidlib-sample come destinazione in Android Studio.Build and run oidlib-sample as the target in Android Studio.

    Progresso della compilazione oidlib di esempio

  11. Eliminare la directory app rimasta dopo la rimozione del modulo dal progetto perché Android Studio non la elimina per motivi di sicurezza.Delete the app directory that was left when you removed the module from the project because Android Studio doesn't delete it for safety.

    Struttura dei file che include la directory dell'applicazione

  12. Aprire il menu Edit Configurations (Modifica configurazioni) per rimuovere la configurazione di esecuzione rimasta dopo la rimozione del modulo dal progetto.Open the Edit Configurations menu to remove the run configuration that was also left when you removed the module from the project.

    Menu Edit Configurations (Modifica configurazioni) Configurazione di esecuzione dell'appEdit configurations menu Run configuration of app

Configurare gli endpoint dell'esempioConfigure the endpoints of the sample

Ora che oidlib-sample è correttamente in esecuzione, verranno modificati alcuni endpoint per l'integrazione con Azure Active Directory.Now that you have the oidlib-sample running successfully, let's edit some endpoints to get this working with Azure Active Directory.

Configurare il client modificando il file oidc_clientconf.xmlConfigure your client by editing the oidc_clientconf.xml file

  1. Poiché si stanno usando solo flussi OAuth2 per ottenere un token e chiamare l'API Graph, impostare il client solo per eseguire OAuth2.Because you are using OAuth2 flows only to get a token and call the Graph API, set the client to do OAuth2 only. OIDC verrà illustrato in un esempio successivo.OIDC will come in a later example.

        <bool name="oidc_oauth2only">true</bool>
    
  2. Configurare l'ID client ricevuto dal portale di registrazione.Configure your client ID that you received from the registration portal.

        <string name="oidc_clientId">86172f9d-a1ae-4348-aafa-7b3e5d1b36f5</string>
        <string name="oidc_clientSecret"></string>
    
  3. Configurare l'URI di reindirizzamento con quello riportato di seguito.Configure your redirect URI with the one below.

        <string name="oidc_redirectUrl">https://login.microsoftonline.com/common/oauth2/nativeclient</string>
    
  4. Configurare gli ambiti necessari per accedere all'API Graph.Configure your scopes that you need in order to access the Graph API.

        <string-array name="oidc_scopes">
            <item>openid</item>
            <item>https://graph.microsoft.com/User.Read</item>
            <item>offline_access</item>
        </string-array>
    

Il valore User.Read in oidc_scopes consente di leggere il profilo di base dell'utente connesso.The User.Read value in oidc_scopes allows you to read the basic profile the signed in user. Per altre informazioni su tutti gli ambiti disponibili, vedere Microsoft Graph permission scopes(Ambiti di autorizzazione di Microsoft Graph).You can learn more about all the available scopes at Microsoft Graph permission scopes.

Se si necessita di spiegazioni sugli ambiti openid o offline_access in OpenID Connect, vedere Protocolli della versione 2.0: flusso del codice di autorizzazione di OAuth 2.0.If you'd like explanations about openid or offline_access as scopes in OpenID Connect, see 2.0 Protocols - OAuth 2.0 Authorization Code Flow.

Configurare gli endpoint client modificando il file oidc_endpoints.xmlConfigure your client endpoints by editing the oidc_endpoints.xml file

  • Aprire il file oidc_endpoints.xml e apportare le modifiche seguenti:Open the oidc_endpoints.xml file and make the following changes:

    <!-- Stores OpenID Connect provider endpoints. -->
    <resources>
        <string name="op_authorizationEnpoint">https://login.microsoftonline.com/common/oauth2/v2.0/authorize</string>
        <string name="op_tokenEndpoint">https://login.microsoftonline.com/common/oauth2/v2.0/token</string>
        <string name="op_userInfoEndpoint">https://www.example.com/oauth2/userinfo</string>
        <string name="op_revocationEndpoint">https://www.example.com/oauth2/revoketoken</string>
    </resources>
    

Se si usa OAuth2 come protocollo, questi endpoint non devono mai essere modificati.These endpoints should never change if you are using OAuth2 as your protocol.

Nota

Gli endpoint per userInfoEndpoint e revocationEndpoint non sono attualmente supportati da Azure Active Directory.The endpoints for userInfoEndpoint and revocationEndpoint are currently not supported by Azure Active Directory. Se si lasciano questi valori con il valore example.com predefinito, verrà ricordato che non sono disponibili nell'esempio :-)If you leave these with the default example.com value, you will be reminded that they are not available in the sample :-)

Configurare una chiamata API GraphConfigure a Graph API call

  • Aprire il file HomeActivity.java e apportare le modifiche seguenti:Open the HomeActivity.java file and make the following changes:

       //TODO: set your protected resource url
        private static final String protectedResUrl = "https://graph.microsoft.com/v1.0/me/";
    

In questo caso una semplice chiamata all'API Graph restituisce le informazioni.Here a simple Graph API call returns our information.

Si tratta di tutte le modifiche da apportare.Those are all the changes that you need to do. Eseguire l'applicazione oidlib-sample e fare clic su Accedi.Run the oidlib-sample application, and click Sign in.

Una volta eseguita l'autenticazione, premere il pulsante Request Protected Resource (Richiedi risorsa protetta) per testare la chiamata all'API Graph.After you've successfully authenticated, select the Request Protected Resource button to test your call to the Graph API.

Ottenere aggiornamenti della sicurezza per il prodottoGet security updates for our product

È consigliabile ricevere notifiche sui problemi di sicurezza. A tale scopo, visitare Security TechCenter e sottoscrivere gli avvisi di sicurezza.We encourage you to get notifications about security incidents by visiting the Security TechCenter and subscribing to Security Advisory Alerts.