Iniciar sessão de utilizadores com a Microsoft
Este documento mostra como usar a Identity Platform para iniciar sessão de utilizadores com a Microsoft. São suportadas contas Microsoft pessoais e contas do Azure Active Directory (Azure AD).
Antes de começar
Este tutorial pressupõe que já ativou a Identity Platform e tem uma app Web básica escrita em HTML e JavaScript. Consulte o início rápido para saber como.
Configurar a Microsoft como fornecedor
Para configurar a Microsoft como um fornecedor de identidade:
Aceda à página Fornecedores de identidade na Google Cloud consola.
Clique em Adicionar um fornecedor.
Selecione Microsoft na lista.
Introduza o ID da app e o segredo da app da Microsoft. Se ainda não tiver um ID e um segredo, siga os passos no artigo Início rápido: registe uma app com o ponto final do Azure AD v2.0 para os obter.
Este ponto final suporta contas pessoais da Microsoft e contas do Azure AD. Consulte a vista geral da plataforma de identidade da Microsoft (v2.0) para saber mais sobre o Azure AD.
Configure o URI indicado em Configurar Microsoft como o URI de redirecionamento OAuth válido para a sua app Microsoft. Se configurou um domínio personalizado na Identity Platform, atualize o URI de redirecionamento na configuração da sua app Microsoft para usar o domínio personalizado em vez do domínio predefinido. Por exemplo, altere
https://myproject.firebaseapp.com/__/auth/handler
parahttps://auth.myownpersonaldomain.com/__/auth/handler
.Registe os domínios da sua app clicando em Adicionar domínio em Domínios autorizados. Para fins de programação, o
localhost
já está ativado por predefinição.Em Configure a sua aplicação, clique em Detalhes da configuração. Copie o fragmento para o código da sua app para inicializar o SDK do cliente do Identity Platform.
Clique em Guardar.
Iniciar sessão de utilizadores com o SDK do cliente
Crie uma instância do objeto
OAuthProvider
, transmitindomicrosoft.com
como o ID do fornecedor:JavaScript
var provider = new firebase.auth.OAuthProvider('microsoft.com');
Opcional: adicione âmbitos do OAuth. Os âmbitos especificam os dados que está a pedir à Microsoft. Os dados mais confidenciais podem exigir âmbitos específicos. Consulte a documentação da Microsoft para determinar os âmbitos de que a sua app precisa.
JavaScript
provider.addScope('mail.read'); provider.addScope('calendars.read');
Opcional: especifique parâmetros de OAuth personalizados adicionais. Estas são específicas da Microsoft e são normalmente usadas para personalizar a experiência de autenticação.
JavaScript
provider.setCustomParameters({ // Force re-consent. prompt: 'consent', // Target specific email with login hint. login_hint: 'user@firstadd.onmicrosoft.com' });
Pode usar o parâmetro
mkt
para personalizar o idioma do fluxo de autenticação. Por exemplo:provider.setCustomParameters({ mkt: 'fr' });
Pode usar a propriedade
tenant
para limitar o acesso a utilizadores fora de um domínio do Azure AD específico. Especifique o nome de domínio amigável do inquilino ou o respetivo identificador GUID. Os utilizadores que não pertençam a este domínio não vão poder iniciar sessão. Por exemplo: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' });
Consulte a documentação do Microsoft OAuth para ver uma lista completa dos parâmetros suportados pela Microsoft. Tenha em atenção que não pode transmitir parâmetros reservados pelo OAuth ou pela Identity Platform.
Use o objeto
OAuthProvider
para iniciar sessão no utilizador. Pode abrir uma janela de pop-up ou redirecionar a página atual. O redirecionamento é mais fácil para os utilizadores em dispositivos móveis.Para mostrar um pop-up, chame
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. });
Para redirecionar a página, chame primeiro
signInWithRedirect()
:Siga as práticas recomendadas quando usar
signInWithRedirect
,linkWithRedirect
oureauthenticateWithRedirect
.JavaScript
firebase.auth().signInWithRedirect(provider);
Em seguida, obtenha o token da Microsoft chamando
getRedirectResult()
quando a página for carregada: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. });
Assim que tiver um token de acesso, pode usá-lo para chamar a API Microsoft Graph Por exemplo:
REST
curl -i -H "Authorization: Bearer [ACCESS_TOKEN]" https://graph.microsoft.com/v1.0/me
Ao contrário de outros fornecedores suportados pela Identity Platform, a Microsoft não fornece um URL de foto para os utilizadores. Em alternativa, tem de usar a API Graph para pedir os dados binários da foto.
Além do token de acesso, também pode obter o token de ID da Microsoft de um utilizador.
A reivindicação oid
neste token contém um ID exclusivo do utilizador. Pode comparar
este valor com o ID localizado em user.providerData[0].uid
. Se os seus utilizadores estiverem a iniciar sessão com um inquilino do Azure AD, estes campos vão corresponder exatamente. Se não for o caso, o campo é preenchido com zeros (por exemplo, o ID federado
4b2eabcdefghijkl
aparece como 00000000-0000-0000-4b2e-abcdefghijkl
).
Não use a reivindicação sub
para comparar IDs de utilizadores. A reivindicação sub
é específica da app e não corresponde ao ID usado pela Microsoft.
Iniciar sessão de utilizadores manualmente
Alguns outros fornecedores da Identity Platform, como a
Google,
Facebook e
Twitter, permitem-lhe iniciar sessão nos utilizadores
manualmente chamando signInWithCredential()
.
Esta capacidade não é suportada para a Microsoft. A Identity Platform não consegue validar o público-alvo das chaves de acesso OAuth da Microsoft, o que é um requisito de segurança crítico.
Se não conseguir usar o SDK do cliente da Identity Platform para iniciar sessão dos utilizadores, tem de usar uma biblioteca OAuth de terceiros para fazer a autenticação com a Microsoft. Em seguida, pode usar a autenticação personalizada para trocar a credencial da Microsoft por um token personalizado.
O que se segue?
- Saiba mais acerca dos utilizadores da Identity Platform.
- Permitir que os utilizadores iniciem sessão com outros fornecedores de identidade.