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.
Als u een Windows-toepassing bouwt, kunt u overwegen om te vereenvoudigen hoe gebruikers zich verifiëren met behulp van een verificatiebroker. Web Account Manager (WAM) is een verificatiebroker die werkt met MSAL-Python. WAM is alleen beschikbaar op Windows 10 en hoger, evenals Windows Server 2019 en hoger.
Zie Wat is een broker in de documentatie van MSAL.NET voor meer informatie over de voordelen van het gebruik van een verificatiebroker.
Gebruik
Als u de broker wilt gebruiken, moet u de broker-gerelateerde pakketten installeren naast de kern-MSAL van PyPI:
pip install msal[broker]>=1.20,<2
Als broker-gerelateerde pakketten niet zijn geïnstalleerd en u probeert de verificatiebroker te gebruiken, krijgt u de fout ImportError: U moet afhankelijkheid installeren door: pip install "msal[broker]>=1.20,2<".
Maak vervolgens een nieuwe PublicClientApplication aan en stel enable_broker_on_windows in op True. Dit zorgt ervoor dat MSAL probeert te communiceren met WAM in plaats van een nieuw browservenster te openen. Als u een platformonafhankelijke toepassing ontwikkelt, moet u ook gebruikmaken van enable_broker_on_mac, zoals wordt beschreven in het artikel over het gebruik van MSAL Python met een Authentication Broker op macOS.
from msal import PublicClientApplication
app = PublicClientApplication(
"CLIENT_ID",
authority="https://login.microsoftonline.com/common",
enable_broker_on_windows=True)
U kunt nu een token verkrijgen door acquire_token_interactive aan te roepen en een ingang van het bovenliggende venster op te geven via parent_window_handle:
result = app.acquire_token_interactive(["User.ReadBasic.All"],
parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
Een bovenliggende venstergreep is vereist door WAM om ervoor te zorgen dat het dialoogvenster correct wordt weergegeven boven in het aanvraagvenster. MSAL stelt dit niet rechtstreeks af vanwege het feit dat er veel variabelen zijn die van invloed kunnen zijn op het venster waarmee WAM moet worden verbonden, en ontwikkelaars die toepassingen bouwen, het meest geschikt zijn om te bepalen welk venster dat moet zijn.
Voor consoletoepassingen maakt MSAL het eenvoudig door een out-of-the-box-oplossing te bieden voor het verkrijgen van de venstergreep voor de terminal - CONSOLE_WINDOW_HANDLE. Voor bureaubladtoepassingen is er mogelijk meer werk nodig met de Windows-API om de venstergreep op te halen. Helper-pakketten, zoals pywin32 , kunnen helpen bij API-aanroepen.
Voordat u uw toepassing uitvoert, moet u ervoor zorgen dat u de omleidings-URL voor de bureaublad-app configureert:
Als u de Windows broker wilt gebruiken, moet voor uw toepassing de juiste omleidings-URL zijn geconfigureerd in de Azure Portal, in de vorm van:
ms-appx-web://microsoft.aad.brokerplugin/YOUR_CLIENT_ID
Als de omleidings-URL niet is geconfigureerd, krijgt u een broker_error vergelijkbaar met (pii). Status: Response_Status.Status_ApiContractViolation, foutcode: 3399614473, Tag: 557973642.
Als de configuratie en instantiëring juist was, ziet u, nadat u de toepassing hebt uitgevoerd, de verificatiebroker wordt geactiveerd en kan de gebruiker het account selecteren waarmee hij of zij zich wil verifiëren.
Let erop dat als u overschakelt naar verificatie op basis van een broker, als de gebruiker eerder is aangemeld en de status Aangemeld nog steeds geldig is, het aanroepen acquire_token_interactive nog steeds resulteert in een stille poging om een token te verkrijgen en alleen wanneer dat nodig is. Als u liever altijd wilt worden gevraagd, kunt u deze optionele parameter prompt="select_account" gebruiken.
Verschillen tussen brokerervaringen
Afhankelijk van de instantie die is opgegeven bij het instantiëren PublicClientApplication, kan de gebruikersinterface van de broker afwijken.
/Consumenten
Wordt alleen gebruikt voor verificatie met persoonlijke Microsoft-accounts.
/Gemeenschappelijk
Wordt gebruikt voor verificatie met persoonlijke Microsoft accounts, evenals werk- en schoolaccounts.
/Organisaties
Wordt alleen gebruikt voor verificatie met werk- en schoolaccounts.
Als login_hint is opgegeven, maar het account nog niet is geregistreerd in WAM, wordt de hint automatisch ingevuld in het veld E-mail of telefoon .
/TENANT_ID
Wordt alleen gebruikt voor verificatie met werk- en schoolaccounts binnen de opgegeven tenant.
Als login_hint is opgegeven, maar het account nog niet is geregistreerd in WAM, wordt de hint automatisch ingevuld in het veld E-mail of telefoon .