Configure a autenticação em um aplicativo Web Node.js de exemplo usando o Azure Active Directory B2C
Este artigo de exemplo usa um aplicativo Node.js de exemplo para mostrar como adicionar a autenticação do Azure AD B2C (Azure Active Directory B2C) a um aplicativo Web Node.js. O aplicativo de exemplo permite que os usuários entrem, saiam, atualizem o perfil e redefinam a senha usando os fluxos de usuários do Azure AD B2C. O aplicativo Web de exemplo usa a MSAL (Biblioteca de Autenticação da Microsoft) para Node para lidar com autenticação e autorização.
Neste artigo, você fará as seguintes tarefas:
- Registre um aplicativo Web no portal do Azure.
- Crie fluxos de usuários combinado de Entrada e inscrição, Edição de perfil e Predefinição de senha para o aplicativo no portal do Azure.
- Atualize um aplicativo de Nó de exemplo para usar seu próprio aplicativo do Azure AD B2C e os fluxos de usuários.
- Teste o aplicativo de exemplo.
Pré-requisitos
- Node.js.
- Visual Studio Code ou outro editor de código.
- Locatário do Azure AD B2C. Se ainda não criou o seu próprio, siga as etapas em Tutorial: Criar um locatário do Azure Active Directory B2C e registrar o nome do locatário.
Etapa 1: configurar os fluxos de usuários
Quando os usuários tentam entrar, o aplicativo inicia uma solicitação de autenticação para o ponto de extremidade de autorização por meio de um fluxo de usuário. O fluxo de usuários define e controla a experiência do usuário. Quando o fluxo é concluído, o Azure AD B2C gera um token e redireciona o usuário de volta para o aplicativo.
Se você ainda não fez isso, crie um fluxo de usuário ou uma política personalizada. Repita as etapas para criar três fluxos de usuário separados, da seguinte forma:
- Um fluxo de usuário combinado de entrada e inscrição, como
susi
. Esse fluxo de usuário também dá suporte à experiência Esqueceu sua senha. - Um fluxo de usuário de edição de perfil, como
edit_profile
. - Um fluxo de usuário de Redefinição de senha, como
reset_password
.
O Azure AD B2C acrescenta B2C_1_
ao início do nome do fluxo de usuário. Por exemplo, susi
torna-se B2C_1_susi
.
Etapa 2: registrar um aplicativo Web
Para habilitar a entrada no aplicativo com o Azure AD B2C, registre o aplicativo no diretório do Azure AD B2C. O registro do aplicativo estabelece uma relação de confiança entre o aplicativo e o Azure AD B2C.
Durante o registro do aplicativo, você especificará o URI de redirecionamento. O URI de redirecionamento é o ponto de extremidade para o qual o usuário é redirecionado pelo Azure AD B2C após a autenticação desse usuário com o Azure AD B2C. O processo de registro de aplicativo gera uma ID de aplicativo, também conhecida como ID do cliente, que identifica o aplicativo de modo exclusivo. Após o registro do aplicativo, o Azure AD B2C usa a ID de aplicativo e o URI de redirecionamento para criar solicitações de autenticação.
Etapa 2.1: registrar o aplicativo
Para registrar o aplicativo Web, siga estas etapas:
Entre no portal do Azure.
Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para o seu locatário do Azure Active Directory B2C no menu Diretórios + assinaturas.
No portal do Azure, pesquise e selecione Azure AD B2C.
Escolha Registros de aplicativo e Novo registro.
Em Nome, insira um nome para o aplicativo (por exemplo, webapp1).
Em Tipos de conta com suporte, selecione Contas em qualquer provedor de identidade ou diretório organizacional (para autenticar usuários com fluxos dos usuários) .
Em URI de redirecionamento, selecione Web e, em seguida, na caixa da URL, insira
http://localhost:3000/redirect
.Em Permissões, marque a caixa de seleção Conceder consentimento do administrador para permissões offline_access e openid.
Selecione Registrar.
Selecione Visão geral.
Registre a ID do aplicativo (cliente) para uso posterior, quando você configurar o aplicativo Web.
Etapa 2.2: Criar um segredo do cliente do aplicativo Web
Crie um segredo do cliente para o aplicativo Web registrado. O aplicativo Web usa o segredo do cliente para confirmar sua identidade ao solicitar tokens.
- Em Gerenciar, selecione Certificados & Segredos.
- Selecione Novo segredo do cliente.
- Na caixa Descrição, insira uma descrição para o segredo do cliente (por exemplo, clientsecret1).
- Em Expirar, selecione um período durante o qual o segredo será válido e clique em Adicionar.
- Registre o Valor do segredo. Você usará esse valor para uma configuração em uma etapa posterior.
Etapa 3: obter o aplicativo Web de exemplo
Baixe o arquivo zip ou clone o aplicativo Web de exemplo do GitHub.
git clone https://github.com/Azure-Samples/active-directory-b2c-msal-node-sign-in-sign-out-webapp.git
Extraia o arquivo de exemplo para uma pasta. Você obterá um aplicativo Web com a seguinte estrutura de diretório:
active-directory-b2c-msal-node-sign-in-sign-out-webapp/
├── index.js
└── package.json
└── .env
└── views/
└── layouts/
└── main.hbs
└── signin.hbs
A pasta views
contém os arquivos Handlebars para a interface do usuário do aplicativo.
Etapa 4: instalar dependências
Abra uma janela do console e altere para o diretório que contém o aplicativo de amostra Node.js. Por exemplo:
cd active-directory-b2c-msal-node-sign-in-sign-out-webapp
Execute os seguintes comandos para instalar as dependências do aplicativo:
npm install && npm update
Etapa 5: configurar o aplicativo Web de exemplo
Abra o aplicativo Web em um editor de códigos, como Visual Studio Code. Na pasta raiz do projeto, abra o arquivo .env. Esse arquivo contém informações sobre seu provedor de identidade do Azure AD B2C. Atualize as propriedades das configurações do aplicativo a seguir:
Chave | Valor |
---|---|
APP_CLIENT_ID |
A ID do aplicativo (cliente) para o aplicativo Web que você registrou na etapa 2.1. |
APP_CLIENT_SECRET |
O valor do segredo do cliente referente ao aplicativo Web que você criou na Etapa 2.2 |
SIGN_UP_SIGN_IN_POLICY_AUTHORITY |
A autoridade de fluxo de usuário Entrada e inscrição, como https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<sign-in-sign-up-user-flow-name> . Substitua <your-tenant-name> pelo nome do seu locatário e <sign-in-sign-up-user-flow-name> pelo nome do seu fluxo de usuário de Entrada e Inscrição, como B2C_1_susi . Saiba como Obter o nome do locatário. |
RESET_PASSWORD_POLICY_AUTHORITY |
A autoridade de fluxo de usuário Redefinir senha, como https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<reset-password-user-flow-name> . Substitua <your-tenant-name> pelo nome do seu locatário e <reset-password-user-flow-name> pelo nome do seu fluxo de usuário Redefinir senha, como B2C_1_reset_password_node_app . |
EDIT_PROFILE_POLICY_AUTHORITY |
A autoridade de fluxo do usuário de Edição de perfil, como https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<profile-edit-user-flow-name> . Substitua <your-tenant-name> pelo nome do seu locatário e <reset-password-user-flow-name> pelo nome do seu fluxo de usuário redefinir senha, como B2C_1_edit_profile_node_app . |
AUTHORITY_DOMAIN |
O domínio de autoridade do Azure AD B2C, como https://<your-tenant-name>.b2clogin.com . Substitua <your-tenant-name> pelo nome do seu locatário. |
APP_REDIRECT_URI |
O URI de redirecionamento do aplicativo em que o Azure AD B2C retornará as respostas de autenticação (tokens). Ele corresponde ao URI de Redirecionamento que você definiu ao registrar seu aplicativo no portal do Azure e deverá ser acessível publicamente. Deixe o valor como está. |
LOGOUT_ENDPOINT |
O ponto de extremidade de saída do Azure AD B2C, como https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<sign-in-sign-up-user-flow-name>/oauth2/v2.0/logout?post_logout_redirect_uri=http://localhost:3000 . Substitua <your-tenant-name> pelo nome do seu locatário e <sign-in-sign-up-user-flow-name> pelo nome do seu fluxo de usuário de Entrada e Inscrição, como B2C_1_susi . |
Seu arquivo de configuração final deve ser semelhante ao seguinte exemplo:
#HTTP port
SERVER_PORT=3000
#web apps client ID
APP_CLIENT_ID=<You app client ID here>
#session secret
SESSION_SECRET=sessionSecretHere
#web app client secret
APP_CLIENT_SECRET=<Your app client secret here>
#B2C sign up and sign in user flow/policy authority
SIGN_UP_SIGN_IN_POLICY_AUTHORITY=https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<sign-in-sign-up-user-flow-name>
#B2C password reset user flow/policy authority
RESET_PASSWORD_POLICY_AUTHORITY=https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<reset-password-user-flow-name>
#B2C edit profile user flow/policy authority
EDIT_PROFILE_POLICY_AUTHORITY=https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<profile-edit-user-flow-name>
#B2C authority domain
AUTHORITY_DOMAIN=https://<your-tenant-name>.b2clogin.com
#client redirect url
APP_REDIRECT_URI=http://localhost:3000/redirect
#Logout endpoint
LOGOUT_ENDPOINT=https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<sign-in-sign-up-user-flow-name>/oauth2/v2.0/logout?post_logout_redirect_uri=http://localhost:3000
Executar o aplicativo Web de exemplo
Agora, você pode testar o aplicativo de exemplo. É necessário iniciar o servidor Node e acessá-lo por meio do navegador em http://localhost:3000
.
Em seu terminal, execute o seguinte código para iniciar o servidor Web do Node.js:
node index.js
No navegador, acesse
http://localhost:3000
. Você deve ver a página com um botão Entrar.
Testar a entrada
Depois que a página com o botão Entrar for carregada por completo, selecione Entrar. Você é solicitado a fazer login.
Insira suas credenciais de entrada, como endereço de email e senha. Se você ainda não tem uma conta, selecione Inscrever-se agora para criar uma. Depois de entrar ou se inscrever com êxito, você deverá ver a página a seguir, que mostra o status de logon.
Testar a edição de perfil
- Depois de entrar, selecione Editar perfil.
- Insira novas alterações conforme necessário e, em seguida, selecione Continuar. Você deverá visualizar a página com o status de entrada com as novas alterações, como Nome Fornecido.
Testar redefinição de senha
- Depois de se conectar, selecione Redefinir senha.
- Na próxima caixa de diálogo exibida, você pode cancelar a operação selecionando Cancelar. Como alternativa, insira um endereço de email e selecione Enviar código de verificação. Você receberá um código de verificação para sua conta de email. Copie o código de verificação em seu email, insira-o na caixa de diálogo de redefinição de senha e, em seguida, selecione Verificar código.
- Selecione Continuar.
- Insira sua nova senha, confirme-a e selecione Continuar. Você deve ver a página que mostra o status de logon.
Teste de logoff
Depois de fazer logon, selecione Sair. Você deve ver a página que tem um botão Entrar.