Share via


Tutorial: Chamar uma API protegida e exibir os resultados

No tutorial anterior, você adicionou as experiências de entrada e saída ao aplicativo. Agora você pode desenvolver essas funcionalidades para permitir que os usuários conectados chamem uma API Web protegida. Para os fins deste tutorial, chame a API do Microsoft Graph e exiba as informações de perfil do usuário conectado.

Neste tutorial:

  • Adicionar código para chamar uma API downstream protegida
  • Executar e testar o aplicativo

Chamar a API e exibir os resultados

Para chamar uma API protegida, você deve primeiro adquirir um token de acesso para o usuário atual chamando auth.get_token_for_user da seguinte forma:

@app.route("/call_downstream_api")
def call_downstream_api():
    token = auth.get_token_for_user(app_config.SCOPE)
    if "error" in token:
        return redirect(url_for("login"))
    # Use access token to call downstream api
    api_result = requests.get(
        app_config.ENDPOINT,
        headers={'Authorization': 'Bearer ' + token['access_token']},
        timeout=30,
    ).json()
    return render_template('display.html', result=api_result)

Quando um usuário navega para a rota de URL /call_downstream_api o Flask invoca a função call_downstream_api() que primeiro tenta obter um token de acesso usando auth.get_token_for_user(app_config.SCOPE). Se houver um problema de autenticação ou qualquer erro no token, redirecione o usuário para a página de entrada para reautenticação.

Se o aplicativo obtiver com êxito um token de acesso, ele fará uma solicitação HTTP para a API downstream usando o método requests.get(...). Na solicitação, a URL da nossa API downstream é especificada em app_config.ENDPOINT. Você também passa o token de acesso no campo Authorization do cabeçalho da solicitação.

Uma solicitação bem-sucedida para a API downstream (API do Microsoft Graph) retorna uma resposta JSON armazenada em uma variável api_result e passada para o modelo display.html para renderização.

Adicionar código para executar o aplicativo

Para executar seu aplicativo, adicione o seguinte trecho de código no final do arquivo app.py.

if __name__ == "__main__":
    app.run()

Testar o aplicativo

Siga estas etapas para testar as experiências de entrada, chamada à API e saída em seu aplicativo Web:

  1. Se ainda não o fez, substitua os valores de espaço reservado no arquivo .env.sample pelos detalhes de registro do aplicativo Microsoft Entra (ID do cliente, segredo do cliente e URL de autoridade)

  2. Crie um ambiente virtual para o aplicativo:

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

    pip install -r requirements.txt
    
  4. 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 --host=localhost --port=5000
    
  5. 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.

  6. Depois que a janela de entrada for exibida, forneça a conta com a qual deseja entrar e selecione Avançar:

    Captura de tela mostrando a tela de entrada.

  7. O navegador redirecionará você para fornecer uma senha para a sua conta. Insira a senha e selecione Entrar.

    Neste ponto, o fluxo de entrada pode variar dependendo das informações de segurança exigidas pela sua organização, por exemplo, autenticação multifator usando um aplicativo autenticador.

  8. Para Permanecer conectado, selecione Não ou Sim.

  9. O aplicativo solicita permissão para manter o acesso aos dados que você concedeu a ele, fazer entrada e leitura do seu perfil. Selecione Aceitar para consentir com essas permissões.

  10. A seguinte captura de tela é exibida, indicando que você está conectado ao aplicativo:

    Captura de tela mostrando um usuário conectado.

  11. Para chamar uma API protegida e mostrar os resultados, selecione Chamar uma API downstream. Uma chamada bem-sucedida para a API do Microsoft Graph retorna informações sobre o usuário conectado, conforme mostrado:

    Captura de tela mostrando os resultados de uma chamada à API bem-sucedida.

Sair do aplicativo

  1. Selecione Logout para sair do aplicativo.
  2. Você será solicitado a escolher uma conta para sair. Selecione a conta usada para entrar.
  3. Uma mensagem é exibida indicando que você saiu. Agora você pode fechar a janela do navegador.

Confira também

O aplicativo que você criou usa a biblioteca de identidade, que abstrai a maioria dos detalhes da Biblioteca de Autenticação da Microsoft (MSAL) para Python. Para obter mais informações sobre como usar a MSAL Python em diferentes cenários, consulte a documentação MSAL Python.