Procéder à la connexion des utilisateurs avec Microsoft
Ce document explique comment utiliser Identity Platform pour connecter des utilisateurs avec Microsoft. Les comptes Microsoft personnels et les comptes Azure Active Directory (Azure AD) sont tous deux acceptés.
Avant de commencer
Ce tutoriel suppose que vous avez déjà activé Identity Platform et que vous disposez d'une application Web de base écrite en HTML et JavaScript. Pour savoir comment, consultez le guide de démarrage rapide.
Configurer Microsoft en tant que fournisseur
Pour configurer Microsoft en tant que fournisseur d'identité :
Accédez à la page Fournisseurs d'identité dans la console Google Cloud.
Cliquez sur Ajouter un fournisseur.
Dans la liste, sélectionnez Microsoft.
Saisissez votre ID d'application et votre code secret de l'application Microsoft. Si vous ne possédez pas encore d'ID et de code secret, suivez les étapes décrites dans la section Démarrage rapide: enregistrer une application avec le point de terminaison Azure AD v2.0 pour vous en procurer.
Ce point de terminaison accepte les comptes personnels Microsoft et les comptes Azure AD. Pour en savoir plus sur Azure AD, consultez la présentation de la plate-forme Microsoft Identity (v2.0).
Configurez l'URI répertorié sous Configurer Microsoft en tant qu'URI de redirection OAuth valide pour votre application Microsoft. Si vous avez configuré un domaine personnalisé dans Identity Platform, mettez à jour l'URI de redirection dans la configuration de votre application Microsoft pour utiliser le domaine personnalisé au lieu du domaine par défaut. Par exemple, remplacez
https://myproject.firebaseapp.com/__/auth/handler
parhttps://auth.myownpersonaldomain.com/__/auth/handler
.Enregistrez les domaines de votre application en cliquant sur Ajouter un domaine sous Domaines autorisés. À des fins de développement,
localhost
est déjà activé par défaut.Sous Configurer votre application, cliquez sur Informations sur la configuration. Copiez l'extrait dans le code de votre application pour initialiser le SDK client Identity Platform.
Cliquez sur Enregistrer.
Connecter des utilisateurs avec le SDK client
Créez une instance de l'objet
OAuthProvider
, en transmettantmicrosoft.com
comme ID de fournisseur :JavaScript
var provider = new firebase.auth.OAuthProvider('microsoft.com');
Facultatif : Ajoutez des champs d'application OAuth. Les champs d'application spécifient les données que vous demandez à Microsoft. Des données plus sensibles peuvent nécessiter des champs d'application spécifiques. Consultez la documentation de Microsoft pour déterminer les champs d'application dont votre application a besoin.
JavaScript
provider.addScope('mail.read'); provider.addScope('calendars.read');
Facultatif : spécifiez des paramètres OAuth personnalisés supplémentaires. Ceux-ci sont spécifiques à Microsoft et sont généralement utilisées pour personnaliser l'expérience d'authentification.
JavaScript
provider.setCustomParameters({ // Force re-consent. prompt: 'consent', // Target specific email with login hint. login_hint: 'user@firstadd.onmicrosoft.com' });
Vous pouvez utiliser le paramètre
mkt
pour personnaliser la langue du flux d'authentification. Exemple :provider.setCustomParameters({ mkt: 'fr' });
Vous pouvez utiliser la propriété
tenant
pour limiter l'accès aux utilisateurs en dehors d'un domaine Azure AD particulier. Indiquez le nom de domaine convivial du locataire ou son identifiant GUID. Les utilisateurs qui ne font pas partie de ce domaine ne pourront pas se connecter. Exemple :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' });
Consultez la documentation Microsoft OAuth pour obtenir la liste complète des paramètres compatibles avec Microsoft. Notez que vous ne pouvez pas transmettre des paramètres réservés par OAuth ou Identity Platform.
Utilisez l'objet
OAuthProvider
pour connecter l'utilisateur. Vous pouvez soit ouvrir une fenêtre pop-up, soit rediriger la page actuelle. La redirection est plus facile pour les utilisateurs d'appareils mobiles.Pour afficher une fenêtre pop-up, appelez
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. });
Pour rediriger la page, commencez par appeler
signInWithRedirect()
:Suivez les bonnes pratiques lorsque vous utilisez
signInWithRedirect
,linkWithRedirect
oureauthenticateWithRedirect
.JavaScript
firebase.auth().signInWithRedirect(provider);
Récupérez ensuite le jeton Microsoft en appelant
getRedirectResult()
lors du chargement de votre page :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. });
Une fois que vous disposez d'un jeton d'accès, vous pouvez l'utiliser pour appeler l'API Microsoft Graph. Exemple:
REST
curl -i -H "Authorization: Bearer [ACCESS_TOKEN]" https://graph.microsoft.com/v1.0/me
Contrairement aux autres fournisseurs acceptés par Identity Platform, Microsoft ne fournit pas d'URL de photo aux utilisateurs. À la place, vous devez utiliser l'API Graph pour demander les données binaires de la photo.
En plus du jeton d'accès, vous pouvez également récupérer le jeton d'ID Microsoft d'un utilisateur.
La revendication oid
sur ce jeton contient un ID unique pour l'utilisateur. Vous pouvez le comparer à l'ID situé à l'adresse user.providerData[0].uid
. Si vos utilisateurs se connectent avec un locataire Azure AD, ces champs correspondent exactement. Si ce n'est pas le cas, des zéros sont ajoutés à la valeur (par exemple, l'ID fédéré 4b2eabcdefghijkl
s'affiche sous la forme 00000000-0000-0000-4b2e-abcdefghijkl
).
N'utilisez pas la revendication sub
pour comparer les ID utilisateur. La revendication sub
est spécifique à l'application et ne correspond pas à l'ID utilisé par Microsoft.
Connecter manuellement des utilisateurs
Certains autres fournisseurs Identity Platform, tels que Google, Facebook et Twitter, vous permettent de connecter des utilisateurs manuellement en appelant signInWithCredential()
.
Cette fonctionnalité n'est pas compatible avec Microsoft. Identity Platform ne peut pas vérifier l'audience des jetons d'accès Microsoft OAuth, ce qui est une exigence de sécurité critique.
Si vous ne pouvez pas utiliser le SDK client Identity Platform pour connecter vos utilisateurs, vous devez utiliser une bibliothèque OAuth tierce pour vous authentifier avec Microsoft. Vous pouvez ensuite utiliser l'authentification personnalisée pour échanger les identifiants Microsoft contre un jeton personnalisé.
Étape suivante
- En savoir plus sur les utilisateurs d'Identity Platform.
- Procéder à la connexion des utilisateurs avec d'autres fournisseurs d'identité.