Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: Trabalhadores
Inquilinos externos (saber mais)
Neste tutorial, você chama a API do Microsoft Graph a partir de um aplicativo Web Python Flask. No tutorial anterior, você adicionou as experiências de entrada e saída ao aplicativo. Depois que um usuário entra, o aplicativo adquire um token de acesso para chamar a API do Microsoft Graph.
Neste tutorial, você:
- Atualize um aplicativo web 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 em Tutorial: Adicionar início de sessão a um aplicativo Web Python Flask usando a plataforma de identidade da Microsoft.
Definir escopos e ponto de extremidade da API
Neste exemplo, chamamos a API do Microsoft Graph para obter as informações de perfil do usuário conectado. Se seu aplicativo estiver em um locatário da força de trabalho, ao entrar, o usuário consente com os escopos exigidos pelo aplicativo para acessar a API do Microsoft Graph. Se a sua aplicação estiver num inquilino externo, certifique-se de que concede consentimento de administrador em nome dos utilizadores no seu inquilino. Em seguida, o aplicativo usa o token de acesso para chamar a API e exibir os resultados.
No arquivo de .env do, 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
Enviar o endpoint da API para a página inicial. Isto permite-te chamar o teu endpoint. Atualize a rota
/
para parecer com o mostrado no seguinte trecho 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 trecho de código a seguir. Passamos a lista de permissões que a nossa aplicação 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 ficheiro 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 método
requests.get(...)
. Na solicitação, nossa URL de API downstream é especificada emapp_config.ENDPOINT
e o token de acesso é passado no campoAuthorization
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 modelodisplay.html
para renderização.
Exibir resultados da API
Crie um ficheiro chamado display.html na pasta de modelos . Esta página mostra 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 seu terminal, execute o seguinte comando:
python3 -m flask run --debug --host=localhost --port=3000
Você 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
. Vê uma página de início de sessão.Inicie sessão com a sua conta Microsoft seguindo os passos. É-lhe pedido que forneça um endereço de e-mail e uma palavra-passe para iniciar sessão.
Se houver algum escopo necessário para o aplicativo, uma tela de consentimento é apresentada. O aplicativo solicita permissão para manter o acesso aos dados aos quais você permite acessar e para fazer login. Selecione Aceitar. Esta tela não aparecerá se nenhum escopo estiver definido.
Chamar API
Selecione o link Chamar uma API na página inicial. 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 Sair para sair da aplicação. Você será solicitado a escolher uma conta da qual sair. Selecione a conta que utilizou para iniciar sessão.
Material de referência
O ms_identity_python abstrai os detalhes da biblioteca MSAL. Para obter mais informações, consulte documentação do MSAL para Python. Este material de referência ajuda você a entender como inicializar um aplicativo e adquirir tokens usando o MSAL Python.