Accesso degli utenti con Microsoft
Questo documento mostra come utilizzare Identity Platform per far accedere gli 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à:
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 e il Segreto dell'app 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 che Azure AD . Per saperne di più su Azure AD, consulta la panoramica della piattaforma di identità Microsoft (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, aggiornate l'URI di reindirizzamento nella configurazione dell'app Microsoft in modo da utilizzare il dominio personalizzato anziché il dominio predefinito. Ad esempio, modifica
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. Per scopi di sviluppo,
localhost
è già attivato per impostazione predefinita.In Configura la tua applicazione, fai clic su Dettagli di configurazione. Copia il nel codice dell'app per inizializzare Identity Platform SDK client.
Fai clic su Salva.
Accesso degli utenti con l'SDK client
Crea un'istanza dell'oggetto
OAuthProvider
, passandomicrosoft.com
come l'ID provider:JavaScript
var provider = new firebase.auth.OAuthProvider('microsoft.com');
Facoltativo:aggiungi ambiti OAuth. Gli ambiti specificano quali dati sei a Microsoft. Per dati più sensibili potrebbero essere necessari ambiti. Consultare Microsoft documentazione per determinare gli ambiti necessari alla tua app.
JavaScript
provider.addScope('mail.read'); provider.addScope('calendars.read');
(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 non è un flusso di autenticazione. Ad esempio:provider.setCustomParameters({ mkt: 'fr' });
Puoi utilizzare la proprietà
tenant
per limitare l'accesso agli utenti all'esterno di un un particolare dominio Azure AD. Specifica il nome descrittivo del dominio del tenant o il relativo identificatore GUID. Utenti che non si trovano all'interno 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.
Utilizza l'oggetto
OAuthProvider
per eseguire l'accesso dell'utente. Puoi aprire una finestra popup o reindirizzare la pagina corrente. Il reindirizzamento è più semplice per gli utenti di 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, devi prima chiamare
signInWithRedirect()
:Segui le best practice quando utilizzi
signInWithRedirect
,linkWithRedirect
oreauthenticateWithRedirect
.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 degli altri provider supportati da Identity Platform, Microsoft non fornisci 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 di Microsoft di un utente.
La rivendicazione oid
su questo token contiene un ID univoco per l'utente. Puoi fare un confronto
rispetto all'ID che si trova all'indirizzo user.providerData[0].uid
. Se gli utenti accedono con un tenant Azure AD, questi campi corrisponderanno esattamente. Se
non lo sono, il campo verrà riempito con zeri (ad esempio, l'ID federato)
4b2eabcdefghijkl
verrà visualizzato come 00000000-0000-0000-4b2e-abcdefghijkl
).
Non utilizzare la dichiarazione sub
per confrontare gli ID utente. La dichiarazione sub
è specifica per l'app,
e non corrisponderà all'ID utilizzato da Microsoft.
Accesso manuale degli utenti
Alcuni altri provider Identity Platform, come
Google,
Facebook e
Twitter, ti consente di accedere agli utenti
manualmente chiamando signInWithCredential()
.
Questa funzionalità non è supportata per Microsoft. Identity Platform non è verificare il pubblico dei token di accesso Microsoft OAuth, a un requisito di sicurezza critico.
Se non riesci a utilizzare l'SDK client di Identity Platform per eseguire l'accesso degli utenti, dovrai utilizzare una libreria OAuth di terze parti per l'autenticazione con Microsoft. Puoi quindi utilizzare l'autenticazione personalizzata per scambiare la credenziale Microsoft con un token personalizzato.
Passaggi successivi
- Scopri di più sugli utenti di Identity Platform.
- Consentire agli utenti di accedere con altri provider di identità.