Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Microsoft Authentication Library (MSAL) is een softwareontwikkelingskit (SDK) waarmee apps de Microsoft Single Sign-on to Linux-broker kunnen aanroepen, een Linux-onderdeel dat onafhankelijk van de Linux-distributie wordt geleverd, maar dat met behulp van een pakketbeheerder wordt geïnstalleerd met sudo apt install microsoft-identity-broker of sudo dnf install microsoft-identity-broker.
Dit onderdeel fungeert als verificatiebroker, zodat de gebruikers van uw app kunnen profiteren van integratie met accounts die bekend zijn bij Linux, zoals het account dat u hebt aangemeld bij uw Linux-sessies voor apps die van de broker gebruikmaken.
De broker wordt ook gebundeld als een afhankelijkheid van toepassingen die zijn ontwikkeld door Microsoft (zoals Bedrijfsportal)). Een voorbeeld van de installatie van de broker die wordt geïnstalleerd, is wanneer een Linux-computer wordt ingeschreven bij het apparaatpark van een bedrijf via een oplossing voor eindpuntbeheer, zoals Microsoft Intune.
Wat is een broker?
Een verificatiebroker is een toepassing die wordt uitgevoerd op de computer van een gebruiker die de verificatiehanddruk- en tokenonderhoud voor verbonden accounts beheert. Het Linux-besturingssysteem gebruikt Microsoft Single Sign-On for Linux als authenticatiebroker. Het heeft veel voordelen voor ontwikkelaars en klanten, waaronder:
- Maakt eenmalige aanmelding mogelijk: hiermee kunnen apps vereenvoudigen hoe gebruikers zich verifiëren met Microsoft Entra ID en worden Microsoft Entra ID vernieuwingstokens beschermd tegen exfiltratie en misbruik
- Verbeterde beveiliging. Veel beveiligingsverbeteringen worden geleverd met de broker, zonder dat u de toepassingslogica hoeft bij te werken.
- Functieondersteuning. Met behulp van de brokerontwikkelaars hebben ze toegang tot uitgebreide besturingssysteem- en servicemogelijkheden.
- Systeemintegratie. Toepassingen die gebruikmaken van de broker plug-and-play met de ingebouwde accountkiezer, zodat de gebruiker snel een bestaand account kan kiezen in plaats van dezelfde referenties telkens opnieuw in te voeren.
- Tokenbeveiliging. Microsoft eenmalige aanmelding voor Linux zorgt ervoor dat de refresh-tokens aan het apparaat zijn gebonden.
Hoe kunt u zich aanmelden voor het gebruik van broker?
- In de MSAL Python-bibliotheek hebben we de
enable_broker_on_linuxvlag geïntroduceerd, waarmee de broker op zowel WSL als zelfstandige Linux mogelijk is.- Als u brokerondersteuning alleen op WSL voor Azure CLI wilt inschakelen, kunt u overwegen de Azure CLI app-code te wijzigen om de
enable_broker_on_wslvlag exclusief op WSL te activeren. - Als u een platformonafhankelijke toepassing ontwikkelt, moet u ook
enable_broker_on_windowsgebruiken, zoals beschreven in het artikel MSAL Python gebruiken met Web Account Manager. - U kunt elke combinatie van de volgende opt-in-parameters instellen op true:
- Als u brokerondersteuning alleen op WSL voor Azure CLI wilt inschakelen, kunt u overwegen de Azure CLI app-code te wijzigen om de
| Vlag voor aanmelden | Als de app wordt uitgevoerd op | De app heeft dit geregistreerd als omleidings-URI voor desktopplatforms in Azure Portal |
|---|---|---|
| broker inschakelen in 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 |
| enable_broker_on_mac | Mac waarop Bedrijfsportal geïnstalleerd | msauth.com.msauth.unsignedapp://auth |
| broker_inschakelen_op_linux | Linux waarop Intune is geïnstalleerd |
https://login.microsoftonline.com/common/oauth2/nativeclient (MOET zijn ingeschakeld) |
Uw toepassing moet ondersteuning bieden voor brokerspecifieke omleidings-URI's. Voor
Linuxhet bijzonder moet de URL voor de omleidings-URI het volgende zijn:https://login.microsoftonline.com/common/oauth2/nativeclientAls u de broker wilt gebruiken, moet u de broker-gerelateerde pakketten installeren naast de kern-MSAL van PyPI:
pip install "msal[broker]>=1.33.0b1,<2"Zodra deze is geconfigureerd, kunt u aanroepen
acquire_token_interactiveom een token te verkrijgen.result = app.acquire_token_interactive(["User.ReadBasic.All"], parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
Parameters voor brokerondersteuning
De volgende parameters zijn beschikbaar voor het configureren van brokerondersteuning in MSAL Python. Deze parameters kunnen worden doorgegeven aan de PublicClientApplication constructor of aan de acquire_token_interactive methode.
| Parameters: | Type | Description |
|---|---|---|
| broker inschakelen in Windows | boolean |
Deze instelling is alleen effectief als uw app wordt uitgevoerd op Windows 10+. Deze parameter wordt standaard ingesteld op None, wat betekent dat MSAL geen broker gebruikt. New in MSAL Python 1.25.0. |
| enable_broker_on_wsl | boolean |
Deze instelling is alleen van kracht als uw app wordt uitgevoerd op WSL. Deze parameter wordt standaard ingesteld op None, wat betekent dat MSAL geen broker gebruikt.
New in MSAL Python 1.25.0. |
| enable_broker_on_mac | boolean |
Deze instelling is alleen van kracht als uw app wordt uitgevoerd op Mac met Bedrijfsportal geïnstalleerd. Deze parameter wordt standaard ingesteld op None, wat betekent dat MSAL geen broker gebruikt.
New in MSAL Python 1.31.0. |
| broker_inschakelen_op_linux | boolean |
Deze instelling is alleen van kracht als uw app wordt uitgevoerd op Linux waarop Intune is geïnstalleerd. Deze parameter wordt standaard ingesteld op None, wat betekent dat MSAL geen broker gebruikt.
New in MSAL Python 1.33.0. |
| parent_window_handle | int |
OPTIONELE |
Opmerkingen met betrekking tot parent_window_handle
De parent_window_handle parameter is vereist, ook al wordt deze niet gebruikt in Linux. Voor GUI-toepassingen wordt de locatie van de aanmeldingsprompt ad-hoc bepaald en kan momenteel niet worden gebonden aan een specifiek venster. In een toekomstige update zal deze parameter worden gebruikt om het daadwerkelijke bovenliggende venster te bepalen.
| Condition | Description |
|---|---|
| App wil geen broker gebruiken | u hoeft geen parent_window_handle op te geven |
| App kiest ervoor om een broker te gebruiken | parent_window_handle is vereist |
| App is een GUI-app die wordt uitgevoerd op Windows- of Mac-systeem | vereist om de venstergreep op te geven, zodat het aanmeldingsvenster boven aan het venster wordt weergegeven |
| App is een console-app die wordt uitgevoerd op Windows- of Mac-systeem | kan een plaatsaanduiding gebruiken PublicClientApplication.CONSOLE_WINDOW_HANDLE |
| App is bedoeld als een platformoverschrijdende toepassing | De app moet enable_broker_on_windows gebruiken, zoals beschreven in het artikel MSAL-Python gebruiken met Web Account Manager. |
Het fallbackgedrag van de brokerondersteuning van MSAL Python
MSAL zal een foutmelding geven of op de achtergrond terugvallen op niet-brokerstromen.
MSAL zal de enable_broker_… negeren en omzeil de broker voor die authenticatiestromen waarvan bekend is dat ze niet door de broker worden ondersteund. Dit omvat ADFS, B2C, enzovoort. Zie hieronder voor andere scenario’s waarin een broker nuttig kan zijn.
MSAL geeft een fout wanneer de appontwikkelaar ervoor heeft gekozen een broker te gebruiken, maar een rechtstreeks afhankelijk pakket, 'mid-tier', niet is geïnstalleerd. In het foutbericht wordt de app-ontwikkelaar begeleid bij het declareren van de juiste afhankelijkheid msal[broker]. We geven hier een foutmelding omdat app-ontwikkelaars daar iets mee kunnen.
MSAL ‘deactiveert’ stilzwijgend de broker en valt, wanneer hiervoor is gekozen en de afhankelijkheid is geïnstalleerd maar niet kon worden geïnitialiseerd, terug op de niet-brokeroptie. We verwachten dat dit zou gebeuren op een apparaat waarvan het besturingssysteem te oud is of het onderliggende brokeronderdeel op een of andere manier niet beschikbaar is. Er is niet veel een app-ontwikkelaar of de eindgebruiker kan hier doen. Uiteindelijk dwingt het beleid voor voorwaardelijke toegang de gebruiker om over te schakelen naar een ander apparaat.
MSAL geeft een fout wanneer de broker is ingeschakeld, geïnstalleerd en geïnitialiseerd, maar daaropvolgende tokenaanvragen mislukken.
Important
Als broker-gerelateerde pakketten niet zijn geïnstalleerd en u probeert de verificatiebroker te gebruiken, krijgt u een foutmelding: ImportError: You need to install dependency by: pip install "msal[broker]>=1.xx,<2"
Note
De parent_window_handle parameter is vereist, ook al wordt deze niet gebruikt in Linux. Voor GUI-toepassingen wordt de locatie van de aanmeldingsprompt ad-hoc bepaald en kan momenteel niet worden gebonden aan een specifiek venster. In een toekomstige update zal deze parameter worden gebruikt om het daadwerkelijke bovenliggende venster te bepalen.
Token-caching
De verificatiebroker verwerkt het vernieuwen en opslaan van toegangstokens. U hoeft geen aangepaste caching in te stellen.
Een voorbeeld-app bouwen
U vindt een voorbeeld-app die laat zien hoe u MSAL Python gebruikt met de verificatiebroker op Linux in de MSAL-Python GitHub-opslagplaats. De voorbeeld-app bevindt zich in de samples/console_app map en bevat voorbeelden van het gebruik van de broker voor verificatie.
App-registratie
Werk uw app-registratie bij in de Azure-portal om de brokerspecifieke omleidings-URI voor Linux op te nemen:
https://login.microsoftonline.com/common/oauth2/nativeclient
Linux-afhankelijkheden
Controleer eerst of Python3 is geïnstalleerd in uw Linux-distributie.
python3 --version
Als dat niet het is, installeert u deze met behulp van pakketbeheer voor uw distributie.
Installeren op debian/Ubuntu gebaseerde Linux-distributie:
sudo add-apt-repository -y universe
sudo apt update
sudo apt install python3 python3-pip libwebkit2gtk-4.1-dev -y
Python-afhankelijkheden
Als u de broker wilt gebruiken, moet u de broker-gerelateerde pakketten installeren naast de kern-MSAL van PyPI:
pip install "msal[broker]>=1.33.0b1,<2"
Project maken
Zodra deze is geconfigureerd, kunt u aanroepen acquire_token_interactive om een token te verkrijgen.
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"]))