Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
Locatários da força de trabalho
Locatários externos (saiba mais)
Neste tutorial, você chamará a API do Microsoft Graph de um aplicativo Web Python Flask. No tutorial anterior, você adicionou as experiências de entrada e saída ao aplicativo. Quando um usuário entra, o aplicativo adquire um token de acesso para chamar a API do Microsoft Graph.
Neste tutorial, você:
- Atualizar um aplicativo Web Do Python Flask existente para adquirir um token de acesso
- Use o token de acesso para chamar a API do Microsoft Graph.
Pré-requisitos
Conclua as etapas no Tutorial: Adicionar entrada a um aplicativo Web Do Python Flask usando a plataforma de identidade da Microsoft.
Definir escopos e ponto de extremidade de API
Neste exemplo, chamamos a API do Microsoft Graph para obter as informações de perfil do usuário conectado. Se o aplicativo estiver em um locatário da força de trabalho, ao entrar, o usuário consentirá com os escopos exigidos pelo aplicativo para acessar a API do Microsoft Graph. Se seu aplicativo estiver em um locatário externo, certifique-se de conceder consentimento do administrador em nome dos usuários em seu locatário. Em seguida, o aplicativo usa o token de acesso para chamar a API e exibir os resultados.
No arquivo .env , adicione o ponto de extremidade que estamos chamando e os escopos necessários para chamar a API do Microsoft Graph:
SCOPE=User.Read
ENDPOINT=https://graph.microsoft.com/v1.0/me
Leia as novas configurações em seu aplicativo atualizando o arquivo app_config.py .
# other configs go here
SCOPE = os.getenv("SCOPE")
ENDPOINT = os.getenv("ENDPOINT")
Chamar uma API protegida
Passe o ponto de extremidade da API para a home page. Isso permite que você chame seu ponto de extremidade. Atualize a
/rota para ter a aparência mostrada no seguinte snippet de código:@app.route("/") @auth.login_required def index(*, context): return render_template( 'index.html', user=context['user'], title="Flask Web App Sample", api_endpoint=os.getenv("ENDPOINT") # added this line )Chame a API protegida do Microsoft Graph, conforme mostrado no snippet de código a seguir. Passamos a lista de escopos que nosso aplicativo precisa usar. Se os escopos estiverem presentes, o contexto conterá um token de acesso. O token de acesso é usado para chamar a API downstream. Adicione este código ao arquivo app.py :
@app.route("/call_api") @auth.login_required(scopes=os.getenv("SCOPE", "").split()) def call_downstream_api(*, context): api_result = requests.get( # Use access token to call a web api os.getenv("ENDPOINT"), headers={'Authorization': 'Bearer ' + context['access_token']}, timeout=30, ).json() if context.get('access_token') else "Did you forget to set the SCOPE environment variable?" return render_template('display.html', title="API Response", result=api_result)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 é especificadaapp_config.ENDPOINTe o token de acesso passado noAuthorizationcampo 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_resultvariável e passada para odisplay.htmlmodelo para renderização.
Exibir resultados da API
Crie um arquivo chamado display.html na pasta de modelos . Esta página exibe o resultado da chamada para o ponto de extremidade do Microsoft Graph. Adicione o seguinte código ao arquivo display.html :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Microsoft Identity Python Web App: API</title>
</head>
<body>
<a href="javascript:window.history.go(-1)">Back</a> <!-- Displayed on top of a potentially large JSON response, so it will remain visible -->
<h1>{{title}}</h1>
<pre>{{ result |tojson(indent=4) }}</pre> <!-- Just a generic json viewer -->
</body>
</html>
Executar e testar o aplicativo Web de exemplo
No terminal, execute o seguinte comando:
python3 -m flask run --debug --host=localhost --port=3000Você pode usar a porta de sua escolha. Essa porta deve ser semelhante à porta do URI de redirecionamento que você registrou anteriormente.
Abra o navegador e vá para
http://localhost:3000. Você vê uma página de entrada.Entre com sua conta da Microsoft seguindo as etapas. É solicitado que você forneça um endereço de email e uma senha para entrar.
Se houver escopos necessários para o aplicativo, uma tela de consentimento será apresentada. O aplicativo solicita permissão para manter o acesso aos dados aos quais você permite acesso e entrar. Selecione Aceitar. Essa tela não será exibida se nenhum escopo for definido.
Chamar API
Selecione chamar um link de API na home page. O aplicativo chama a API do Microsoft Graph para obter as informações de perfil do usuário conectado. O aplicativo exibe o resultado da chamada para a API.
Selecione Logoff para sair do aplicativo. Você será solicitado a escolher uma conta para sair. Selecione a conta usada para entrar.
Material de referência
O ms_identity_python abstrai os detalhes da biblioteca MSAL. Para obter mais informações, consulte a documentação do Python da MSAL. Esse material de referência ajuda você a entender como inicializar um aplicativo e adquirir tokens usando o Python MSAL.