Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pokud vytváříte Windows aplikaci, můžete zvážit zjednodušení ověřování uživatelů pomocí zprostředkovatele ověřování. Správce webových účtů (WAM) je zprostředkovatel ověřování, který spolupracuje s MSAL Python. WAM je k dispozici pouze na Windows 10 a novějších i Windows Server 2019 a vyšších.
Další informace o výhodách použití zprostředkovatele ověřování najdete v tématu Co je zprostředkovatel v dokumentaci k MSAL.NET.
Využití
Pokud chcete použít zprostředkovatele, budete muset nainstalovat balíčky související s zprostředkovateli kromě základní knihovny MSAL z PyPI:
pip install msal[broker]>=1.20,<2
Pokud nejsou nainstalovány balíčky související se zprostředkovatelem a pokusíte se použít ověřovacího zprostředkovatele, zobrazí se chyba ImportError: Musíte nainstalovat závislost pomocí: pip install "msal[broker]>=1.20,<2".
Poté vytvořte novou instanci PublicClientApplication a nastavte enable_broker_on_windows na True. Tím zajistíte, že MSAL bude zkoušet a komunikovat s WAM místo zobrazení nového okna prohlížeče. Pokud píšete multiplatformní aplikaci, budete také muset použít enable_broker_on_mac, jak je popsáno v článku Použití MSAL Python s zprostředkovatelem ověřování v systému macOS.
from msal import PublicClientApplication
app = PublicClientApplication(
"CLIENT_ID",
authority="https://login.microsoftonline.com/common",
enable_broker_on_windows=True)
Token teď můžete získat voláním acquire_token_interactive a zadáním popisovače nadřazeného okna prostřednictvím parent_window_handle:
result = app.acquire_token_interactive(["User.ReadBasic.All"],
parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
WAM vyžaduje popisovač nadřazeného okna, aby bylo zajištěno, že se dialogové okno správně zobrazí nad oknem, ze kterého byl požadavek vyvolán. MSAL to neurčuje automaticky, protože existuje mnoho faktorů, které mohou ovlivnit, ke kterému oknu se má WAM připojit, a právě vývojáři aplikací mohou nejlépe rozhodnout, které okno to má být.
V případě konzolových aplikací usnadňuje MSAL tím, že nabízí předefinované řešení pro získání úchytu okna pro terminál - CONSOLE_WINDOW_HANDLE. U desktopových aplikací může být k získání popisovače okna potřeba více práce s rozhraním API Windows. Pomocné balíčky, jako pywin32, mohou pomoci s voláním rozhraní API.
Před spuštěním aplikace se ujistěte, že jste nakonfigurovali adresu URL pro přesměrování desktopové aplikace:
Pokud chcete použít zprostředkovatele Windows, musí mít vaše aplikace správnou adresu URL přesměrování nakonfigurovanou v Azure Portal ve tvaru:
ms-appx-web://microsoft.aad.brokerplugin/YOUR_CLIENT_ID
Pokud není adresa URL pro přesměrování nakonfigurovaná, zobrazí se chyba broker_error podobná (pii). Stav: Response_Status.Status_ApiContractViolation, kód chyby: 3399614473, Tag: 557973642.
Pokud byla konfigurace a vytvoření instance správné, po spuštění aplikace by se mělo zobrazit spuštění zprostředkovatele ověřování a povolit uživateli vybrat účet, se kterým se chce ověřit.
Stojí za zmínku, že pokud přepnete na ověřování prostřednictvím brokera a uživatel byl dříve přihlášený a stav přihlášení je stále platný, volání acquire_token_interactive stále povede k tichému pokusu o získání tokenu a uživatel bude vyzván jen v případě potřeby. Pokud chcete vždy zobrazit výzvu, můžete použít tento volitelný parametr prompt="select_account".
Rozdíly mezi prostředím zprostředkovatele
V závislosti na autoritě zadané při vytváření PublicClientApplicationinstance se uživatelské rozhraní zprostředkovatele může lišit.
/Spotřebitelé
Používá se k ověřování pouze u osobních Microsoft účtů.
/Společné
Používá se k ověřování pomocí osobních Microsoft účtů i pracovních a školních účtů.
/Organizace
Používá se k ověřování pouze u pracovních a školních účtů.
Pokud login_hint zadáte, ale účet ještě není zaregistrovaný v WAM, nápověda se automaticky vyplní do pole E-mail nebo telefon .
/TENANT_ID
Používá se pouze k ověření pracovních a školních účtů v zadaném tenantu.
Pokud login_hint zadáte, ale účet ještě není zaregistrovaný v WAM, nápověda se automaticky vyplní do pole E-mail nebo telefon .