Tutorial: Chame uma API protegida e exiba os resultados
No tutorial anterior, você adicionou as experiências de entrada e saída ao aplicativo. Agora você pode aproveitar essas funcionalidades para permitir que usuários conectados chamem uma API da Web protegida. Para os fins deste tutorial, você chama a API do Microsoft Graph e exibe informações de perfil do usuário conectado.
Neste tutorial:
- Adicionar código para chamar uma API downstream protegida
- Executar e testar o aplicativo
Chame a API e exiba 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 maneira:
@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, o /call_downstream_api
Flask invoca a call_downstream_api()
função 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 requests.get(...)
método. Na solicitação, nossa URL de API downstream é especificada em app_config.ENDPOINT
. Você também passa o token de acesso no Authorization
campo 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 api_result
variável e passada para o display.html
modelo 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 de app.py .
if __name__ == "__main__":
app.run()
Testar a aplicação
Siga estas etapas para testar as experiências de entrada, chamada de API e logout em seu aplicativo Web:
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 da autoridade)
Crie um ambiente virtual para o aplicativo:
py -m venv .venv .venv\scripts\activate
Instale os requisitos usando
pip
:pip install -r requirements.txt
Execute o aplicativo a partir da linha de comando. Verifique se seu aplicativo está sendo executado na mesma porta que o URI de redirecionamento configurado anteriormente.
flask run --host=localhost --port=5000
Copie o URL https que aparece no terminal, por exemplo, https://localhost:5000e cole-o em um navegador. Recomendamos o uso de uma sessão privada ou anônima do navegador.
Depois que a janela de login for exibida, forneça a conta com a qual entrar e selecione Avançar:
O seu navegador irá redirecioná-lo para fornecer uma palavra-passe para a sua conta. Introduza a palavra-passe e selecione Iniciar sessão.
Neste ponto, o fluxo de entrada pode variar dependendo das informações de segurança que sua organização exige, por exemplo, autenticação multifator usando um aplicativo autenticador.
Em Permanecer conectado, você pode selecionar Não ou Sim.
O aplicativo solicita permissão para manter o acesso aos dados aos quais você deu acesso, fazer login e ler seu perfil. Selecione Aceitar para consentir essas permissões.
A captura de tela a seguir é exibida, indicando que você está conectado ao aplicativo:
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:
Sair do aplicativo
- Selecione Sair para sair do aplicativo.
- Você será solicitado a escolher uma conta da qual sair. Selecione a conta que utilizou para iniciar sessão.
- Uma mensagem é exibida indicando que você saiu. Agora você pode fechar a janela do navegador.
Consulte também
O aplicativo que você criou usa a biblioteca de identidades, que abstrai a maioria dos detalhes da Microsoft Authentication Library (MSAL) para Python. Para obter mais informações sobre como usar o MSAL Python para diferentes cenários, consulte a documentação do MSAL Python.