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 fare, consulta la guida rapida.
Configurazione di Microsoft come fornitore
Per configurare Microsoft come provider di identità:
Vai alla pagina Provider di identità nella console Google Cloud .
Fai clic su Aggiungi un provider.
Seleziona Microsoft dall'elenco.
Inserisci l'ID app e il segreto dell'app di Microsoft. Se non hai già un ID e un secret, 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).
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 che utilizzi il dominio personalizzato anziché quello predefinito. Ad esempio, modifica
https://myproject.firebaseapp.com/__/auth/handlerinhttps://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à attivato per impostazione predefinita.Nella sezione 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.comcome 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. I dati più sensibili potrebbero richiedere ambiti specifici. Consulta la documentazione di Microsoft per determinare gli ambiti necessari per la tua app.
JavaScript
provider.addScope('mail.read'); provider.addScope('calendars.read');(Facoltativo) Specifica parametri OAuth personalizzati aggiuntivi. Questi sono specifici per Microsoft e vengono in genere 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
mktper personalizzare la lingua del flusso di autenticazione. Ad esempio:provider.setCustomParameters({ mkt: 'fr' });Puoi utilizzare la proprietà
tenantper limitare l'accesso agli utenti esterni a un determinato dominio Azure AD. Specifica il nome di dominio descrittivo del tenant o il suo identificatore GUID. Gli utenti che non appartengono a 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 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
OAuthProviderper consentire l'accesso all'utente. Puoi aprire una finestra popup o reindirizzare la pagina corrente. Il reindirizzamento è più semplice per gli utenti di dispositivi mobili.Per mostrare 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,linkWithRedirectoreauthenticateWithRedirect.JavaScript
firebase.auth().signInWithRedirect(provider);
Quindi, recupera il token Microsoft chiamando
getRedirectResult()quando la pagina viene caricata: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 della foto per gli utenti. Devi invece utilizzare l'API Graph per richiedere i dati binari della foto.
Oltre al token di accesso, puoi recuperare anche un token ID Microsoft di un utente.
La rivendicazione oid in questo token contiene un ID univoco per l'utente. Puoi confrontare
questo ID con quello che si trova in user.providerData[0].uid. Se gli utenti
accedono con un tenant 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 la rivendicazione sub per confrontare gli ID utente. L'attestazione sub è specifica dell'app
e non corrisponde all'ID utilizzato da Microsoft.
Accesso degli utenti manuale
Altri provider di Identity Platform, come
Google,
Facebook e
Twitter, ti consentono di accedere 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, 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 la credenziale Microsoft con un token personalizzato.
Passaggi successivi
- Scopri di più sugli utenti di Identity Platform.
- Accedere con altri provider di identità.