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:
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)
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 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
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.
Depois que a janela de entrada for exibida, forneça a conta com a qual deseja entrar e selecione Avançar:
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.
Para Permanecer conectado, selecione Não ou Sim.
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.
A seguinte captura de tela é 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 Logout para sair do aplicativo.
- Você será solicitado a escolher uma conta para sair. Selecione a conta usada para entrar.
- 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.