Accesso degli utenti con Microsoft

Questo documento mostra come utilizzare Identity Platform per eseguire l'accesso degli utenti con Microsoft. Sono supportati sia gli account Microsoft personali sia gli account Azure Active Directory (Azure AD).

Prima di iniziare

Questo tutorial presuppone che tu abbia già attivato Identity Platform e che tu abbia un'app web di base scritta utilizzando HTML e JavaScript. Per scoprire come, consulta la guida rapida.

Configurazione di Microsoft come provider

Per configurare Microsoft come provider di identità:

  1. Vai alla pagina Provider di identità nella console Google Cloud.

    Vai alla pagina Provider di identità

  2. Fai clic su Aggiungi un provider.

  3. Seleziona Microsoft dall'elenco.

  4. Inserisci l'ID app e lo App secret di Microsoft. Se non hai già un ID e un segreto, segui i passaggi descritti in Guida rapida: registra un'app con l'endpoint Azure AD v2.0 per ottenerne uno.

    Questo endpoint supporta sia gli account Microsoft personali sia gli account Azure AD. Per saperne di più su Azure AD, consulta la panoramica della piattaforma di identità Microsoft (v2.0).

  5. Configura l'URI elencato in Configura Microsoft come URI di reindirizzamento OAuth valido per la tua app Microsoft. Se hai configurato un dominio personalizzato in Identity Platform, aggiornate l'URI di reindirizzamento nella configurazione dell'app Microsoft in modo da utilizzare il dominio personalizzato anziché il dominio predefinito. Ad esempio, cambia https://myproject.firebaseapp.com/__/auth/handler in https://auth.myownpersonaldomain.com/__/auth/handler.

  6. Registra i domini della tua app facendo clic su Aggiungi dominio in Domini autorizzati. Per scopi di sviluppo, localhost è già attivato per impostazione predefinita.

  7. In Configura l'applicazione, fai clic su Dettagli di configurazione. Copia lo snippet nel codice dell'app per inizializzare l'SDK client di Identity Platform.

  8. Fai clic su Salva.

Accesso degli utenti con l'SDK client

  1. Crea un'istanza dell'oggetto OAuthProvider, passando microsoft.com come ID provider:

    JavaScript

    var provider = new firebase.auth.OAuthProvider('microsoft.com');

  2. (Facoltativo) Aggiungi gli ambiti OAuth. Gli ambiti specificano i dati che stai richiedendo a Microsoft. I dati più sensibili potrebbero richiedere scopi specifici. Consulta la documentazione di Microsoft per determinare gli ambiti di cui ha bisogno la tua app.

    JavaScript

    provider.addScope('mail.read');
    provider.addScope('calendars.read');
    
  3. (Facoltativo) Specifica altri parametri OAuth personalizzati. Si tratta di valori specifici di Microsoft e in genere vengono utilizzati per personalizzare l'esperienza di autenticazione.

    JavaScript

    provider.setCustomParameters({
      // Force re-consent.
      prompt: 'consent',
      // Target specific email with login hint.
      login_hint: 'user@firstadd.onmicrosoft.com'
    });
    

    Puoi utilizzare il parametro mkt per personalizzare la lingua del flusso di autenticazione. Ad esempio:

    provider.setCustomParameters({
      mkt: 'fr'
    });
    

    Puoi utilizzare la proprietà tenant per limitare l'accesso agli utenti esterni a un determinato dominio Azure AD. Specifica il nome descrittivo del dominio del tenant o il relativo identificatore GUID. Gli utenti che non fanno parte di questo dominio non potranno accedere. Ad esempio:

    provider.setCustomParameters({
      // Optional "tenant" parameter in case you are using an Azure AD tenant.
      // eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com'
      // or "common" for tenant-independent tokens.
      // The default value is "common".
      tenant: 'TENANT_ID'
    });
    

    Consulta la documentazione di OAuth di Microsoft per un elenco completo dei parametri supportati da Microsoft. Tieni presente che non puoi trasmettere parametri riservati da OAuth o Identity Platform.

  4. Utilizza l'oggetto OAuthProvider per consentire all'utente di accedere. Puoi aprire una finestra popup o reindirizzare la pagina corrente. Il reindirizzamento è più semplice per gli utenti che utilizzano dispositivi mobili.

    Per visualizzare un popup, chiama signInWithPopup():

    JavaScript

    firebase.auth().signInWithPopup(provider)
      .then((result) => {
        // IdP data available in result.additionalUserInfo.profile.
        // ...
    
        /** @type {firebase.auth.OAuthCredential} */
        var credential = result.credential;
    
        // OAuth access and id tokens can also be retrieved:
        var accessToken = credential.accessToken;
        var idToken = credential.idToken;
      })
      .catch((error) => {
        // Handle error.
      });

    Per reindirizzare la pagina, chiama prima signInWithRedirect():

    Segui le best practice quando utilizzi signInWithRedirect, linkWithRedirect o reauthenticateWithRedirect.

    JavaScript

    firebase.auth().signInWithRedirect(provider);

    Quindi, recupera il token Microsoft chiamando getRedirectResult() al caricamento della pagina:

    JavaScript

    firebase.auth().getRedirectResult()
      .then((result) => {
        // IdP data available in result.additionalUserInfo.profile.
        // ...
    
        /** @type {firebase.auth.OAuthCredential} */
        var credential = result.credential;
    
        // OAuth access and id tokens can also be retrieved:
        var accessToken = credential.accessToken;
        var idToken = credential.idToken;
      })
      .catch((error) => {
        // Handle error.
      });

Una volta ottenuto un token di accesso, puoi utilizzarlo per chiamare l'API Microsoft Graph Ad esempio:

REST

curl -i -H "Authorization: Bearer [ACCESS_TOKEN]" https://graph.microsoft.com/v1.0/me

A differenza di altri provider supportati da Identity Platform, Microsoft non fornisce un URL di una foto per gli utenti. Devi invece utilizzare l'API Graph per richiedere i dati binari della foto.

Oltre al token di accesso, puoi anche recuperare il token ID di Microsoft di un utente. La rivendicazione oid su questo token contiene un ID univoco per l'utente. Puoi confrontarlo con l'ID all'indirizzo user.providerData[0].uid. Se gli utenti accedono con un tenant Azure AD, questi campi corrisponderanno esattamente. In caso contrario, il campo verrà completato con zeri (ad esempio, l'ID federato4b2eabcdefghijkl verrà visualizzato come 00000000-0000-0000-4b2e-abcdefghijkl).

Non utilizzare la rivendicazione sub per confrontare gli ID utente. La rivendicazione sub è specifica per l'app e non corrisponde all'ID utilizzato da Microsoft.

Accesso degli utenti manualmente

Alcuni altri fornitori di Identity Platform, come Google, Facebook e Twitter, ti consentono di far accedere gli utenti manualmente chiamando signInWithCredential().

Questa funzionalità non è supportata per Microsoft. Identity Platform non è in grado di verificare il pubblico dei token di accesso OAuth di Microsoft, che è un requisito di sicurezza fondamentale.

Se non puoi utilizzare l'SDK client di Identity Platform per far accedere gli utenti, dovrai utilizzare una libreria OAuth di terze parti per autenticarti con Microsoft. Puoi quindi utilizzare l'autenticazione personalizzata per scambiare la credenziale Microsoft con un token personalizzato.

Passaggi successivi