Accesso degli utenti con Microsoft
Questo documento mostra come utilizzare Identity Platform per accedere agli utenti con Microsoft. Sono supportati sia gli account Microsoft personali che gli account Azure AD (Azure AD).
Prima di iniziare
Questo tutorial presuppone che tu abbia già attivato Identity Platform e abbia un'app web di base scritta utilizzando HTML e JavaScript. Per scoprire come fare, consulta la Guida rapida.
Configurazione di Microsoft come provider
Per configurare Microsoft come provider di identità:
Vai alla pagina Provider di identità nella console Google Cloud.
Fai clic su Add A Provider (Aggiungi un provider).
Seleziona Microsoft dall'elenco.
Inserisci l'ID app di Microsoft e il Secret dell'app. Se non hai ancora un ID e un secret, segui i passaggi descritti in Guida rapida: registrare un'app con l'endpoint Azure AD v2.0 per ottenerne uno.
Questo endpoint supporta sia gli account Microsoft personali che gli account Azure AD. Per saperne di più su Azure AD, consulta la panoramica di Microsoft Identity Platform (v2.0).
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, aggiorna 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
inhttps://auth.myownpersonaldomain.com/__/auth/handler
.Registra i domini della tua app facendo clic su Aggiungi dominio in Domini autorizzati. A scopo di sviluppo,
localhost
è già abilitato per impostazione predefinita.In Configura la tua applicazione, fai clic su Dettagli di configurazione. Copia lo snippet nel codice della tua app per inizializzare l'SDK client di Identity Platform.
Fai clic su Salva.
Accesso degli utenti con l'SDK client
Crea un'istanza dell'oggetto
OAuthProvider
, passandomicrosoft.com
come ID provider:JavaScript
var provider = new firebase.auth.OAuthProvider('microsoft.com');
Facoltativo:aggiungi ambiti OAuth. Gli ambiti specificano i dati che stai richiedendo a Microsoft. Dati più sensibili potrebbero richiedere ambiti specifici. Consulta la documentazione di Microsoft per determinare gli ambiti necessari alla tua applicazione.
JavaScript
provider.addScope('mail.read'); provider.addScope('calendars.read');
(Facoltativo) Specifica altri parametri OAuth personalizzati. Sono specifici per 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 di dominio descrittivo del tenant o il relativo identificatore GUID. Gli utenti che non sono all'interno di questo dominio non saranno in grado di 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 Microsoft OAuth per un elenco completo dei parametri supportati da Microsoft. Tieni presente che non puoi passare parametri riservati da OAuth o Identity Platform.
Utilizza l'oggetto
OAuthProvider
per accedere all'utente. Puoi aprire una finestra popup o reindirizzare la pagina corrente. Il reindirizzamento è più semplice per gli utenti che usano 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
oreauthenticateWithRedirect
.JavaScript
firebase.auth().signInWithRedirect(provider);
Quindi, recupera il token Microsoft chiamando
getRedirectResult()
durante il 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 foto agli utenti. Dovrai invece utilizzare l'API Graph per richiedere i dati binari della foto.
Oltre al token di accesso, puoi anche recuperare il token ID Microsoft di un utente.
L'attestazione oid
su questo token contiene un ID univoco per l'utente. Puoi confrontare questo valore con l'ID che si trova all'indirizzo user.providerData[0].uid
. Se i tuoi utenti accedono con un tenant di Azure AD, questi campi corrisponderanno esattamente. In caso contrario, il campo verrà riempito con zeri (ad esempio, l'ID federato 4b2eabcdefghijkl
verrà visualizzato come 00000000-0000-0000-4b2e-abcdefghijkl
).
Non utilizzare l'attestazione sub
per confrontare gli ID utente. L'attestazione sub
è specifica dell'app e non corrisponde all'ID utilizzato da Microsoft.
Accesso manuale agli utenti
Alcuni altri provider Identity Platform, come
Google,
Facebook e
Twitter, ti consentono di far accedere manualmente gli utenti
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 riesci a utilizzare l'SDK client di Identity Platform per accedere agli utenti, dovrai utilizzare una libreria OAuth di terze parti per l'autenticazione con Microsoft. Puoi quindi utilizzare l'autenticazione personalizzata per scambiare le credenziali Microsoft con un token personalizzato.
Passaggi successivi
- Scopri di più sugli utenti di Identity Platform.
- Accedere agli utenti con altri provider di identità.