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.
A Biblioteca de Autenticação da Microsoft (MSAL) é um kit de desenvolvimento de software (SDK) que permite às aplicações invocar o mediador Microsoft Single Sign-on para Linux, um componente Linux disponibilizado independentemente da distribuição Linux, embora seja instalado através de um gestor de pacotes com sudo apt install microsoft-identity-broker ou sudo dnf install microsoft-identity-broker.
Este componente atua como um intermediário de autenticação, permitindo que os utilizadores da sua aplicação beneficiem da integração com contas reconhecidas pelo Linux — como a conta com a qual iniciou sessão na sua sessão do Linux, para aplicações que utilizam o intermediário.
O corretor também é incluído como uma dependência de aplicações desenvolvidas pela Microsoft (como o Portal da Empresa). Um exemplo de instalação do broker é quando um computador Linux é integrado na frota de dispositivos de uma empresa através de uma solução de gestão de endpoints como o Microsoft Intune.
O que é um corretor
Um agente de autenticação é um aplicativo executado na máquina de um usuário que gerencia os handshakes de autenticação e a manutenção de token para contas conectadas. O sistema operativo Linux utiliza o single log-on da Microsoft para Linux como seu intermediário de autenticação. Tem muitos benefícios tanto para desenvolvedores como para clientes, incluindo:
- Permite o Single Sign-On: permite que as aplicações simplifiquem a autenticação dos utilizadores com o Microsoft Entra ID e protege os tokens de atualização do Microsoft Entra ID contra exfiltração e uso indevido
- Segurança reforçada. Muitas melhorias de segurança são entregues com o broker, sem necessidade de atualizar a lógica da aplicação.
- Suporte a funcionalidades. Com a ajuda do broker, os programadores podem aceder a capacidades ricas de sistema operativo e serviço.
- Integração com sistemas. Aplicações que utilizam o plug-and-play do corretor com o seletor de conta incorporado, permitindo ao utilizador escolher rapidamente uma conta existente em vez de reintroduzir as mesmas credenciais repetidamente.
- Proteção de Tokens. O login único da Microsoft para Linux garante que os tokens de atualização estão ligados ao dispositivo.
Como optar por usar o corretor?
- Na biblioteca MSAL Python, introduzimos a
enable_broker_on_linuxbandeira, que permite o broker tanto em WSL como em Linux independente.- Se o seu objetivo é ativar o suporte para o broker apenas no WSL no CLI do Azure, pode considerar modificar o código da aplicação CLI do Azure para ativar o sinalizador
enable_broker_on_wslexclusivamente no WSL. - Se estiver a escrever uma aplicação multiplataforma, também terá de usar
enable_broker_on_windows, conforme descrito no artigo Usando MSAL Python com Gestor de Contas Web. - Pode definir qualquer combinação dos seguintes parâmetros de opt-in para verdadeiro:
- Se o seu objetivo é ativar o suporte para o broker apenas no WSL no CLI do Azure, pode considerar modificar o código da aplicação CLI do Azure para ativar o sinalizador
| Indicador de adesão | Se a aplicação funcionar | A aplicação registou este URI como um URI de redirecionamento para a plataforma de ambiente de trabalho no Portal do Azure |
|---|---|---|
| ativar_intermediário_no_windows | Windows 10+ | ms-appx-web://Microsoft. AAD. BrokerPlugin/your_client_id |
| enable_broker_on_wsl | WSL | ms-appx-web://Microsoft. AAD. BrokerPlugin/your_client_id |
| ativar o broker no Mac | Mac com Portal da Empresa instalado | msauth.com.msauth.unsignedapp://auth |
| ativar o broker no Linux | Linux com Intune instalado |
https://login.microsoftonline.com/common/oauth2/nativeclient (TEM de ser ativado) |
A sua aplicação precisa de suportar URIs de redirecionamento específicos do corretor. Para
Linuxespecificamente, a URL do URI de redirecionamento deve ser:https://login.microsoftonline.com/common/oauth2/nativeclientPara usar o broker, terá de instalar os pacotes relacionados com o broker além do MSAL core do PyPI:
pip install "msal[broker]>=1.33.0b1,<2"Depois de configurado, pode ligar
acquire_token_interactivepara adquirir um token.result = app.acquire_token_interactive(["User.ReadBasic.All"], parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
Parâmetros para suporte de corretores
Os seguintes parâmetros estão disponíveis para configurar o suporte de brokers em MSAL Python. Estes parâmetros podem ser passados ao PublicClientApplication construtor ou ao acquire_token_interactive método.
| Parâmetros: | Tipo | Description |
|---|---|---|
| ativar_intermediário_no_windows | boolean |
Esta configuração só é eficaz se a sua aplicação estiver a correr no Windows 10+. Este parâmetro é automaticamente Nenhum, o que significa que a MSAL não utilizará um corretor. New in MSAL Python 1.25.0. |
| enable_broker_on_wsl | boolean |
Esta definição só é eficaz se a sua aplicação estiver a correr em WSL. Este parâmetro é automaticamente Nenhum, o que significa que a MSAL não utilizará um corretor.
New in MSAL Python 1.25.0. |
| ativar o broker no Mac | boolean |
Esta configuração só é eficaz se a sua aplicação estiver a correr no Mac com o Portal da Empresa instalado. Este parâmetro é automaticamente Nenhum, o que significa que a MSAL não utilizará um corretor.
New in MSAL Python 1.31.0. |
| ativar o broker no Linux | boolean |
Esta definição só é eficaz se a sua aplicação estiver a correr no Linux com o Intune instalado. Este parâmetro é automaticamente Nenhum, o que significa que a MSAL não utilizará um corretor.
New in MSAL Python 1.33.0. |
| parent_window_handle | int |
OPCIONAL |
Notas sobre parent_window_handle
O parent_window_handle parâmetro é necessário mesmo que no Linux não seja utilizado. Para aplicações com interface gráfica, a localização do prompt de login será determinada de forma ad-hoc e atualmente não pode ser vinculada a uma janela específica. Numa atualização futura, este parâmetro será usado para determinar a janela principal real.
| Condição | Description |
|---|---|
| A aplicação não quer utilizar um corretor | Não é preciso especificar um parent_window_handle |
| A aplicação opta por usar um corretor | parent_window_handle é obrigatório |
| A aplicação é uma aplicação com interface gráfica que corre no sistema Windows ou Mac | É necessário fornecer o identificador da janela, para que a janela de início de sessão seja apresentada sobre a sua janela |
| App é uma aplicação de consola a correr no sistema Windows ou Mac | Pode utilizar um marcador de posição PublicClientApplication.CONSOLE_WINDOW_HANDLE |
| A aplicação destina-se a ser uma aplicação multiplataforma | A aplicação precisa de usar enable_broker_on_windows, conforme descrito no artigo Usar MSAL Python com Gestor de Contas Web. |
Os comportamentos de recurso do suporte do broker no MSAL Python
O MSAL irá gerar um erro ou reverter silenciosamente para fluxos sem broker.
A MSAL vai ignorar a enable_broker_... e contornar o broker nos fluxos de autenticação que se sabe NÃO serem suportados pelo broker. Isto inclui ADFS, B2C, etc. Para outros cenários de «could-use-broker», veja abaixo.
O MSAL gera um erro quando o programador da aplicação optou por utilizar o broker, mas não está instalado um pacote intermédio de dependência direta. A mensagem de erro guia o programador da aplicação a declarar a dependência correta msal[broker]. Aqui erramos porque o erro é acionável para os programadores de aplicações.
O MSAL “desativa” silenciosamente o broker e reverte para o modo sem broker, quando essa opção está ativada, a dependência está instalada, mas não foi possível inicializá-la. Prevemos que isto aconteça num dispositivo cujo sistema operativo seja demasiado antigo ou cujo componente intermediário subjacente esteja de alguma forma indisponível. Não há muito que um programador de aplicações ou o utilizador final possa fazer aqui. Eventualmente, a política de acesso condicional obrigará o utilizador a mudar para outro dispositivo.
O MSAL gera um erro quando o broker está ativado, instalado e inicializado, mas os pedidos subsequentes de token falham.
Importante
Se os pacotes relacionados com o broker não estiverem instalados e tentar usar o broker de autenticação, receberá um erro: ImportError: You need to install dependency by: pip install "msal[broker]>=1.xx,<2".
Note
O parent_window_handle parâmetro é necessário mesmo que no Linux não seja utilizado. Para aplicações com interface gráfica, a localização do prompt de login será determinada de forma ad-hoc e atualmente não pode ser vinculada a uma janela específica. Numa atualização futura, este parâmetro será usado para determinar a janela principal real.
Armazenamento em cache de tokens
O intermediário de autenticação gere o armazenamento em cache de tokens de atualização e de acesso. Não precisas de configurar cache personalizado.
Construir uma aplicação de exemplo
Pode encontrar uma aplicação de exemplo que demonstra como usar o MSAL Python com o broker de autenticação no Linux no repositório MSAL Python GitHub. A aplicação de exemplo encontra-se no samples/console_app diretório e inclui exemplos de como usar o corretor para autenticação.
Registo na App
Atualize o registo da sua aplicação no portal do Azure para incluir o URI de redirecionamento específico do corretor para Linux:
https://login.microsoftonline.com/common/oauth2/nativeclient
Dependências do Linux
Primeiro, verifica se tens python3 instalado na tua distribuição Linux.
python3 --version
Se não, instale-o usando o gestor de pacotes para a sua distribuição.
Para instalar numa distribuição Linux baseada em Debian/Ubuntu:
sudo add-apt-repository -y universe
sudo apt update
sudo apt install python3 python3-pip libwebkit2gtk-4.1-dev -y
Dependências de Python
Para usar o broker, terá de instalar os pacotes relacionados com o broker além do MSAL core do PyPI:
pip install "msal[broker]>=1.33.0b1,<2"
Criar projeto
Depois de configurado, pode ligar acquire_token_interactive para adquirir um token.
import sys # For simplicity, we'll read config file from 1st CLI param sys.argv[1]
import json
import logging
import requests
import msal
# Optional logging
# logging.basicConfig(level=logging.DEBUG)
var_authority = "https://login.microsoftonline.com/common"
var_client_id = "your-client-id-here" # Replace with your app's client ID
var_username = "your-username-here" # Replace with your username, e.g., "
var_scope = ["User.ReadBasic.All"]
# Removed unused variable to avoid confusion
# Create a preferably long-lived app instance which maintains a token cache (Default cache is in memory only).
app = msal.PublicClientApplication(
var_client_id,
authority=var_authority,
enable_broker_on_windows=True,
enable_broker_on_wsl=True
)
# The pattern to acquire a token looks like this.
result = None
# Firstly, check the cache to see if this end user has signed in before
accounts = app.get_accounts(username=var_username)
if accounts:
logging.info("Account(s) exists in cache, probably with token too. Let's try.")
result = app.acquire_token_silent(var_scope, account=accounts[0])
if not result:
logging.info("No suitable token exists in cache. Let's get a new one from AAD.")
result = app.acquire_token_interactive(var_scope,parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
if "access_token" in result:
print("Access token is: %s" % result['access_token'])
else:
print(result.get("error"))
print(result.get("error_description"))
print(result.get("correlation_id")) # You may need this when reporting a bug
if 65001 in result.get("error_codes", []): # Not mean to be coded programatically, but...
# AAD requires user consent for U/P flow
print("Visit this to consent:", app.get_authorization_request_url(config["scope"]))