Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jeśli tworzysz aplikację Windows, możesz rozważyć uproszczenie sposobu uwierzytelniania użytkowników za pomocą brokera uwierzytelniania. Menedżer kont sieci Web (WAM) to broker uwierzytelniania, który współpracuje z Python MSAL. WAM jest dostępny tylko w Windows 10 i nowszych, a także Windows Server 2019 i nowszych.
Aby uzyskać więcej informacji na temat zalet korzystania z brokera uwierzytelniania, zobacz Co to jest broker w dokumentacji MSAL.NET.
Użycie
Aby korzystać z brokera, należy zainstalować pakiety powiązane z brokerem oprócz podstawowej biblioteki MSAL z repozytorium PyPI:
pip install msal[broker]>=1.20,<2
Jeśli pakiety związane z brokerem nie są zainstalowane i spróbujesz użyć brokera uwierzytelniania, zostanie wyświetlony błąd ImportError: należy zainstalować zależność według: pip install "msal[broker]>=1.20,2<".
Następnie utwórz nowe wystąpienie PublicClientApplication i ustaw enable_broker_on_windows na True. Dzięki temu biblioteka MSAL będzie próbowała komunikować się z WAM zamiast otwierać nowe okno przeglądarki. Jeśli piszesz aplikację dla wielu platform, musisz również użyć elementu enable_broker_on_mac, zgodnie z opisem w artykule Using MSAL Python with an Authentication Broker on macOS (Używanie Python biblioteki MSAL z brokerem uwierzytelniania w systemie macOS).
from msal import PublicClientApplication
app = PublicClientApplication(
"CLIENT_ID",
authority="https://login.microsoftonline.com/common",
enable_broker_on_windows=True)
Teraz możesz uzyskać token, wywołując acquire_token_interactive i określając uchwyt okna nadrzędnego za pomocą parent_window_handle:
result = app.acquire_token_interactive(["User.ReadBasic.All"],
parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
Uchwyt okna nadrzędnego jest wymagany przez WAM, aby zapewnić poprawne wyświetlanie okna dialogowego na wierzchu okna wywołującego. MSAL nie ustala tego automatycznie, ponieważ istnieje wiele czynników, które mogą wpływać na to, z którym oknem WAM ma się powiązać, a deweloperzy tworzący aplikacje najlepiej mogą zdecydować, które powinno to być okno.
W przypadku aplikacji konsolowych biblioteka MSAL ułatwia to, oferując gotowe rozwiązanie do uzyskania uchwytu okna terminala — CONSOLE_WINDOW_HANDLE. W przypadku aplikacji komputerowych może być wymagane bardziej zaawansowane użycie interfejsu API systemu Windows, aby uzyskać uchwyt okna. Pakiety pomocnicze, takie jak pywin32, mogą ułatwić wykonywanie wywołań interfejsu API.
Przed uruchomieniem aplikacji upewnij się, że skonfigurujesz adres URL przekierowania dla aplikacji komputerowej:
Aby korzystać z brokera Windows, aplikacja musi mieć poprawny adres URL przekierowania skonfigurowany w Azure Portal w kształcie:
ms-appx-web://microsoft.aad.brokerplugin/YOUR_CLIENT_ID
Jeśli adres URL przekierowania nie jest skonfigurowany, otrzymasz broker_error podobny do (pii). Stan: Response_Status.Status_ApiContractViolation, Kod błędu: 3399614473, Tag: 557973642.
Jeśli konfiguracja i inicjalizacja były poprawne, po uruchomieniu aplikacji broker uwierzytelniania powinien się uruchomić i umożliwić użytkownikowi wybranie konta, za pomocą którego chce się uwierzytelnić.
Warto zauważyć, że jeśli przejdziesz na uwierzytelnianie z użyciem brokera, a użytkownik był wcześniej zalogowany i stan zalogowania jest nadal ważny, wywołanie acquire_token_interactive nadal spowoduje podjęcie cichej próby uzyskania tokenu i wyświetli monit tylko wtedy, gdy będzie to konieczne. Jeśli wolisz zawsze monitować, możesz użyć tego opcjonalnego parametru prompt="select_account".
Różnice w środowisku brokera
W zależności od uprawnień określonych podczas tworzenia instancji PublicClientApplication interfejs użytkownika brokera może się różnić.
/konsumenci
Służy do uwierzytelniania tylko przy użyciu osobistych kont Microsoft.
/Wspólne
Służy do uwierzytelniania przy użyciu osobistych kont Microsoft, a także kont służbowych.
/organizacje
Służy do uwierzytelniania za pomocą wyłącznie kont służbowych i szkolnych.
Jeśli login_hint zostanie podana, ale konto nie zostało jeszcze zarejestrowane w WAM, wskazówka zostanie automatycznie wypełniona w polu Adres e-mail lub telefon .
/TENANT_ID
Służy do uwierzytelniania przy użyciu tylko kont służbowych i szkolnych w określonej dzierżawie.
Jeśli login_hint zostanie podana, ale konto nie zostało jeszcze zarejestrowane w WAM, wskazówka zostanie automatycznie wypełniona w polu Adres e-mail lub telefon .