Início Rápido: Fazer login de usuários e chamar o Microsoft Graph a partir de um aplicativo web do Flask em Python

Nesse início rápido, você vai baixar e executar uma amostra de aplicativo web do Flask em Python que demonstra como autenticar usuários e chamar a API do Microsoft Graph. Os usuários em sua organização do Microsoft Entra podem entrar no aplicativo.

Pré-requisitos

Etapa 1: Registre seu aplicativo

Dica

As etapas neste artigo podem variar ligeiramente com base no portal do qual você começa.

Siga essas etapas para registrar seu aplicativo no Centro de administração do Microsoft Entra:

  1. Entre no Centro de administração do Microsoft Entra como pelo menos Administrador de Aplicativo de nuvem.
  2. Se você tiver acesso a vários locatários, use o ícone de Configurações no menu superior para alternar para o locatário no qual deseja registrar o aplicativo no menu Diretórios + assinaturas.
  3. Navegue até Identidade>Aplicativos>Registros de aplicativos e selecione Novo registro.
  4. Insira um Nome para seu aplicativo, por exemplo, python-webapp.
  5. Em Tipos de contas com suporte, selecione Contas somente neste diretório organizacional.
  6. Em URIs de redirecionamento, selecione Web para a plataforma.
  7. Insira um URI de redirecionamento de http://localhost:5000/getAToken. Você pode alterar esse valor mais tarde.
  8. Selecione Registrar.

Etapa 2: adicionar um segredo do cliente

A amostra de aplicativo usa um segredo do cliente para provar sua identidade quando solicita tokens. Siga essas etapas para criar um segredo do cliente para o seu aplicativo web em Python:

  1. Na página Visão geral do aplicativo, anote o valor de ID do aplicativo (cliente) para uso posterior.
  2. Em Gerenciar, selecione os Certificados e segredos e, na seção Segredos do cliente, selecione Novo segredo do cliente.
  3. Insira uma descrição para o segredo do cliente, deixe a expiração padrão e selecione Adicionar.
  4. Salve o Valor do Segredo do Cliente em um local seguro. Você vai precisar desse valor para configurar o código e não poderá recuperá-lo mais tarde.

Ao criar credenciais para um aplicativo de cliente confidencial, a Microsoft recomenda que você use um certificado em vez de um segredo do cliente antes de migrar o aplicativo para um ambiente de produção. Para saber mais sobre como usar um certificado, confira estas instruções.

Etapa 3: adicionar um escopo

Como esse aplicativo faz login de usuários, você precisa adicionar permissões delegadas:

  1. Em Gerenciar, selecione Permissões de API>Adicionar uma permissão.
  2. Verifique se a guia APIs da Microsoft está selecionada.
  3. Na seção APIs da Microsoft frequentemente utilizadas, selecione Microsoft Graph.
  4. Na seção Permissões delegadas, certifique-se de que User.Read esteja selecionado. Use a caixa de pesquisa, se necessário.
  5. Selecione Adicionar Permissões.

Etapa 4: baixar o aplicativo de exemplo

Baixe o exemplo de código Python ou clone o repositório:

git clone https://github.com/Azure-Samples/ms-identity-docs-code-python/

Etapa 5: configurar o aplicativo de exemplo

  1. Abra o aplicativo que você baixou em um IDE e navegue até a pasta raiz da amostra de aplicativo.

    cd flask-web-app
    
  2. Crie um arquivo .env na pasta raiz do projeto usando .env.sample como guia.

    # The following variables are required for the app to run.
    CLIENT_ID=<Enter_your_client_id>
    CLIENT_SECRET=<Enter_your_client_secret>
    AUTHORITY=<Enter_your_authority_url>
    
    • Defina o valor de CLIENT_ID como a ID do aplicativo (cliente) para o aplicativo registrado, disponível na página de visão geral.
    • Defina o valor de CLIENT_SECRET para o segredo do cliente que você criou no Certificados e Segredos para o aplicativo registrado.
    • Defina o valor de AUTHORITY como um https://login.microsoftonline.com/<TENANT_GUID>. A ID do Diretório (locatário) está disponível na página de visão geral do registro do aplicativo.

    As variáveis de ambiente são referenciadas no app_config.py e são mantidas em um arquivo .env separado para mantê-las fora do controle do código-fonte. O arquivo .gitignore fornecido impede que o arquivo .env seja verificado.

Etapa 6: executar o aplicativo de exemplo

  1. Crie um ambiente virtual para o aplicativo:

    py -m venv .venv
    .venv\scripts\activate
    
  2. Instale os requisitos usando pip:

    pip install -r requirements.txt
    
  3. Execute o aplicativo na linha de comando. Verifique se o aplicativo está em execução na mesma porta que o URI de redirecionamento configurado anteriormente.

    flask run --debug --host=localhost --port=5000
    
  4. Copie a URL https que aparece no terminal, por exemplo, https://localhost:5000 e cole-a em um navegador. É recomendável usar uma sessão de navegador privada ou anônima.

  5. Siga as etapas e insira os detalhes necessários para entrar com sua conta Microsoft. Você será solicitado a fornecer um endereço de email e uma senha para fazer o login.

  6. O aplicativo solicita permissão para manter o acesso aos dados para os quais você lhe deu acesso e também para fazer seu login e ler seu perfil, conforme mostrado. Selecione Aceitar.

Diagrama mostrando como a amostra de aplicativo solicita consentimento para acessar as permissões necessárias.

  1. A seguinte captura de tela é exibida, indicando que seu login no aplicativo foi bem-sucedido.

Diagrama mostrando como a amostra de aplicativo fez o login do usuário com sucesso.

Como ele funciona

O diagrama a seguir demonstra como funciona a amostra de aplicativo:

Diagrama que mostra como o aplicativo de exemplo gerado por este início rápido funciona.

  1. O aplicativo usa o identity pacote para obter um token de acesso da plataforma de identidade do Microsoft. Esse pacote é criado tendo por base a Biblioteca de Autenticação da Microsoft (MSAL) para Python com o objetivo de simplificar a autenticação e a autorização em aplicativos web.

  2. O token de acesso que você obteve na etapa anterior é usado como um token de portador para autenticar o usuário ao chamar a API do Microsoft Graph.

Próximas etapas

Saiba mais criando um aplicativo web em Python que faz o login de usuários e chama uma API web protegida na seguinte série de tutoriais com várias partes: