Partilhar via


Iniciar sessão de utilizadores numa aplicação web Python Django de exemplo

Neste guia, você explora um aplicativo Web Python Django protegido pela ID Externa do Microsoft Entra. Este exemplo leva você pela experiência de login para clientes que se autenticam em um aplicativo Web Python Django. O aplicativo Web de exemplo usa a Biblioteca de Autenticação da Microsoft para Python (MSAL Python) para manipular a autenticação do usuário.

Pré-requisitos

  • Visual Studio Code ou outro editor de código.
  • Python 3+.
  • Um locatário externo. Para criar um, escolha um dos seguintes métodos:
    • (Recomendado) Use a extensão de ID Externa do Microsoft Entra para configurar um locatário externo diretamente no Visual Studio Code.
    • Crie um novo locatário externo no centro de administração do Microsoft Entra.

Registar a aplicação Web

Para permitir que seu aplicativo entre usuários com o Microsoft Entra, a ID Externa do Microsoft Entra deve estar ciente do aplicativo criado. O registo da aplicação estabelece uma relação de confiança entre a aplicação e o Microsoft Entra. Quando você registra um aplicativo, o ID externo gera um identificador exclusivo conhecido como ID do aplicativo (cliente), um valor usado para identificar seu aplicativo ao criar solicitações de autenticação.

As etapas a seguir mostram como registrar seu aplicativo no centro de administração do Microsoft Entra:

  1. Entre no centro de administração do Microsoft Entra como pelo menos um desenvolvedor de aplicativos.

  2. Se tiver acesso a vários inquilinos, utilize o ícone Definições no menu superior para mudar para o inquilino externo a partir do menu Diretórios + subscrições.

  3. Navegue até Registros do aplicativo Identity>

  4. Selecione + Novo registo.

  5. Na página Registar uma candidatura que aparece;

    1. Insira um Nome de aplicativo significativo que é exibido para os usuários do aplicativo, por exemplo, ciam-client-app.
    2. Em Tipos de conta suportados, selecione Contas somente neste diretório organizacional.
  6. Selecione Registar.

  7. O painel Visão geral do aplicativo é exibido após o registro bem-sucedido. Registre o ID do aplicativo (cliente) a ser usado no código-fonte do aplicativo.

Para especificar o tipo de aplicativo para o registro do aplicativo, siga estas etapas:

  1. Em Gerir, selecione Autenticação
  2. Na página Configurações da plataforma, selecione Adicionar uma plataforma e, em seguida, selecione a opção Web.
  3. Para os URIs de redirecionamento, digite http://localhost:5000/redirect. Esse URI de redirecionamento é o local para onde o servidor de autorização envia o token de acesso. Você pode personalizá-lo para se adequar ao seu caso de uso.
  4. Selecione Configurar para salvar as alterações.

Adicionar segredo do cliente do aplicativo

Crie um segredo de cliente para o aplicativo registrado. O aplicativo usa o segredo do cliente para provar sua identidade quando solicita tokens.

  1. Na página Registros de aplicativos, selecione o aplicativo que você criou (como ciam-client-app) para abrir a página Visão geral.
  2. Em Gerenciar, selecione Certificados & segredos.
  3. Selecione Novo segredo do cliente.
  4. Na caixa Descrição, insira uma descrição para o segredo do cliente (por exemplo, segredo do cliente do aplicativo ciam).
  5. Em Expira, selecione uma duração para a qual o segredo é válido (de acordo com as regras de segurança da sua organização) e, em seguida, selecione Adicionar.
  6. Registre o valor do segredo. Você usará esse valor para configuração em uma etapa posterior. O valor secreto não será exibido novamente e não poderá ser recuperado por nenhum meio, depois que você navegar para longe dos Certificados e segredos. Certifique-se de gravá-lo.

Depois de registrar seu aplicativo, ele recebe a permissão User.Read . No entanto, como o locatário é um locatário externo, os próprios usuários do cliente não podem consentir com essa permissão. Você, como administrador, deve consentir com essa permissão em nome de todos os usuários no locatário:

  1. Na página Registros de aplicativos, selecione o aplicativo que você criou (como ciam-client-app) para abrir a página Visão geral.

  2. Em Gerenciar, selecione Permissões de API.

    1. Selecione Conceder consentimento de administrador para <o nome> do seu inquilino e, em seguida, selecione Sim.
    2. Selecione Atualizar e verifique se Concedido para <o nome> do locatário aparece em Status da permissão.

Criar um fluxo de utilizador

Siga estas etapas para criar um fluxo de usuário que um cliente pode usar para entrar ou se inscrever em um aplicativo.

  1. Entre no centro de administração do Microsoft Entra como pelo menos um Administrador de Fluxo de Usuário de ID Externo.

  2. Se tiver acesso a vários inquilinos, utilize o ícone Definições no menu superior para mudar para o inquilino externo a partir do menu Diretórios + subscrições.

  3. Navegue até Identidades> externas Fluxos>de usuário.

  4. Selecione + Novo fluxo de usuário.

  5. Na página Criar:

    1. Insira um Nome para o fluxo de usuário, como SignInSignUpSample.

    2. Na lista Provedores de identidade, selecione Contas de email. Esse provedor de identidade permite que os usuários entrem ou se inscrevam usando seu endereço de e-mail.

      Nota

      Provedores de identidade adicionais serão listados aqui somente depois que você configurar a federação com eles. Por exemplo, se você configurar a federação com Google, Facebook, Apple ou um provedor de identidade OIDC , você poderá selecionar esses provedores de identidade adicionais aqui.

    3. Em Contas de e-mail, pode selecionar uma das duas opções. Para este tutorial, selecione E-mail com senha.

      • E-mail com senha: permite que novos usuários se inscrevam e entrem usando um endereço de e-mail como nome de login e uma senha como sua credencial de primeiro fator.
      • Senha única de e-mail: permite que novos usuários se inscrevam e entrem usando um endereço de e-mail como nome de entrada e senha única de e-mail como sua credencial de primeiro fator. A senha única de e-mail deve ser habilitada no nível do locatário (All Identity Providers>Email One-time-passcode) para que essa opção esteja disponível no nível do fluxo do usuário.
    4. Em Atributos de usuário, escolha os atributos que você deseja coletar do usuário no momento da inscrição. Ao selecionar Mostrar mais, você pode escolher atributos e declarações para País/Região, Nome para exibição e Código Postal. Selecione OK. (Os usuários só são solicitados a fornecer atributos quando se inscrevem pela primeira vez.)

  6. Selecione Criar. O novo fluxo de usuário aparece na lista Fluxos de usuário. Se necessário, atualize a página.

Para habilitar a redefinição de senha de autoatendimento, use as etapas no artigo Habilitar redefinição de senha de autoatendimento.

Associar o aplicativo Web ao fluxo de usuários

Para que os usuários clientes vejam a experiência de inscrição ou entrada quando usam seu aplicativo, você precisa associar seu aplicativo a um fluxo de usuário. Embora muitos aplicativos possam ser associados ao seu fluxo de usuário, um único aplicativo só pode ser associado a um fluxo de usuário.

  1. No menu da barra lateral, selecione Identidade.

  2. Selecione Identidades externas e, em seguida , Fluxos de usuário.

  3. Na página Fluxos de usuário, selecione o nome do fluxo de usuário criado anteriormente, por exemplo, SignInSignUpSample.

  4. Em Usar, selecione Aplicativos.

  5. Selecione Adicionar aplicativo.

  6. Selecione o aplicativo na lista, como ciam-client-app , ou use a caixa de pesquisa para localizar o aplicativo e, em seguida, selecione-o.

  7. Escolha Selecionar.

Depois de associar seu aplicativo a um fluxo de usuário, você pode testar seu fluxo de usuário simulando a experiência de inscrição ou entrada de um usuário com seu aplicativo a partir do centro de administração do Microsoft Entra. Para fazer isso, use as etapas em Testar seu fluxo de usuário de inscrição e login.

Clone ou baixe um aplicativo Web de exemplo

Para obter o aplicativo de exemplo, você pode cloná-lo do GitHub ou baixá-lo como um arquivo .zip.

  • Para clonar o exemplo, abra um prompt de comando e navegue até onde deseja criar o projeto e digite o seguinte comando:

    git clone https://github.com/Azure-Samples/ms-identity-docs-code-python.git
    
  • Transfira o ficheiro .zip. Extraia-o para um caminho de arquivo onde o comprimento do nome é inferior a 260 caracteres.

Instalar dependências do projeto

  1. Abra uma janela do console e mude para o diretório que contém o aplicativo Web de exemplo Flask:

    cd django-web-app
    
  2. Configurar ambiente virtual

    py -m venv .venv
    .venv\scripts\activate
    
  3. Execute os seguintes comandos para instalar as dependências do aplicativo:

    python3 -m pip install -r requirements.txt
    

Configurar o aplicativo Web de exemplo

  1. Abra seus arquivos de projeto no Visual Studio Code ou no editor que você está usando.

  2. Crie um arquivo .env na pasta raiz do projeto usando o arquivo .env.sample como guia.

  3. No arquivo .env , forneça as seguintes variáveis de ambiente:

    1. CLIENT_ID que é o ID do aplicativo (cliente) do aplicativo que você registrou anteriormente.
    2. CLIENT_SECRET que é o valor secreto do aplicativo que você copiou anteriormente.
    3. AUTHORITY que é o URL que identifica uma autoridade de token. Deve ser do formato https://{subdomain}.ciamlogin.com/{subdomain}.onmicrosoft.com. Substitua o subdomínio pelo subdomínio Directory (locatário). Por exemplo, se o domínio principal do locatário for contoso.onmicrosoft.com, use contoso. Se não tiver o subdomínio do inquilino, saiba como ler os detalhes do inquilino.
    4. REDIRECT_URI que deve ser semelhante ao URI de redirecionamento que você registrou anteriormente deve corresponder à sua configuração.

Executar e testar aplicativo Web de exemplo

Execute a aplicação para ver a experiência de início de sessão em jogo.

Nota

Este exemplo usa a biblioteca de terceiros de identidade Python. A biblioteca não é mantida oficialmente pela Microsoft, mas é recomendada para seu uso. Essa biblioteca facilita a adição de autenticação ao seu aplicativo Web, pois abstrai muitos dos detalhes do MSAL Python.

  1. No seu terminal, execute o seguinte comando:

    python manage.py runserver localhost:5000                                             
    

    Você pode usar a porta de sua escolha. Isso deve ser semelhante à porta do URI de redirecionamento que você registrou anteriormente.

  2. Abra o navegador e vá para http://localhost:5000. Você deve ver a página semelhante à seguinte captura de tela:

    Captura de ecrã da página de início de sessão de exemplo da aplicação Web Django.

  3. Depois que a página concluir o carregamento, selecione Link de login . Ser-lhe-á pedido para iniciar sessão.

  4. Na página de início de sessão, escreva o seu endereço de e-mail, selecione Seguinte, escreva a sua Palavra-passe e, em seguida, selecione Iniciar sessão. Se você não tiver uma conta, selecione Sem conta? Crie um link, que inicia o fluxo de inscrição.

  5. Se você escolher a opção de inscrição, passará pelo fluxo sign-uo. Preencha seu e-mail, senha única, nova senha e mais detalhes da conta para concluir todo o fluxo de inscrição.

  6. Depois de iniciar sessão ou inscrever-se, é redirecionado de volta para a aplicação Web. Você verá uma página semelhante à seguinte captura de tela:

    Captura de tela do exemplo de aplicativo Web do frasco após a autenticação bem-sucedida.

  7. Selecione Logout para sair do aplicativo Web do usuário ou selecione Chamar uma API downstream para fazer uma chamada para um ponto de extremidade do Microsoft Graph.

Como funciona

Quando os usuários selecionam o link Entrar , o aplicativo inicia uma solicitação de autenticação e redireciona os usuários para a ID Externa do Microsoft Entra. Em seguida, um utilizador inicia sessão ou inscreve-se na página apresentada. Depois de fornecer as credenciais necessárias e consentir com os escopos necessários, o Microsoft Entra External ID redireciona o usuário de volta para o aplicativo Web com um código de autorização. Em seguida, o aplicativo Web usa esse código de autorização para adquirir um token da ID Externa do Microsoft Entra.

Quando os usuários selecionam o link Logout , o aplicativo limpa sua sessão, redireciona o usuário para o ponto de extremidade de saída do Microsoft Entra External ID para notificá-lo de que o usuário saiu. O usuário é então redirecionado de volta para o aplicativo Web.