Używanie Python MSAL z brokerem uwierzytelniania w systemie macOS

Note

Obsługa brokera uwierzytelniania systemu macOS jest wprowadzana w msal wersji 1.31.0.

Korzystanie z brokera uwierzytelniania w systemie macOS pozwala uprościć sposób uwierzytelniania użytkowników w aplikacji za pomocą usługi Microsoft Entra ID, a także umożliwia korzystanie z przyszłych funkcji, które zabezpieczają tokeny odświeżania Microsoft Entra ID przed wykradaniem i niewłaściwym użyciem.

Brokerzy uwierzytelniania nie są wstępnie instalowani w systemie macOS, ale są aplikacjami opracowanymi przez Microsoft, takimi jak Portal firmy. Te aplikacje są zwykle instalowane, gdy komputer z systemem macOS jest zarejestrowany w floty urządzeń firmy za pośrednictwem rozwiązania do zarządzania punktami końcowymi, takiego jak Microsoft Intune. Aby dowiedzieć się więcej na temat konfigurowania urządzenia firmy Apple przy użyciu platformy tożsamości Microsoft, zapoznaj się z artykułem Microsoft Enterprise SSO plug-in for Apple devices (Wtyczka logowania jednokrotnego dla przedsiębiorstw dla urządzeń firmy Apple).

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.31,<2

Ważna

Jeśli pakiety związane z brokerem nie są zainstalowane i spróbujesz użyć brokera uwierzytelniania, zostanie wyświetlony błąd: ImportError: You need to install dependency by: pip install "msal[broker]>=1.31,<2".

Zazwyczaj w systemie macOS Twoje aplikacje Python typu public clientpozyskują tokeny za pośrednictwem przeglądarki systemowej. Aby zamiast tego użyć brokerów uwierzytelniania zainstalowanych w systemie macOS, należy przekazać dodatkowy argument w konstruktorze PublicClientApplication — : enable_broker_on_mac

from msal import PublicClientApplication
 
app = PublicClientApplication(
    "CLIENT_ID",
    authority="https://login.microsoftonline.com/common",
    enable_broker_on_mac =True)

Ważna

Jeśli piszesz aplikację dla wielu platform, musisz również użyć elementu enable_broker_on_windows, zgodnie z opisem w artykule Using MSAL Python with Web Account Manager (Korzystanie z biblioteki MSAL Python z menedżerem kont sieci Web).

Oprócz zmiany konstruktora Twoja aplikacja musi obsługiwać identyfikatory URI przekierowania właściwe dla brokera. W przypadku aplikacji niepodpisanych identyfikator URI to:

msauth.com.msauth.unsignedapp://auth 

W przypadku podpisanych aplikacji identyfikator URI przekierowania powinien mieć następującą wartość:

msauth.BUNDLE_ID://auth

Jeśli adresy URI przekierowania nie są prawidłowo skonfigurowane w konfiguracji aplikacji w portalu Entra, pojawi się błąd taki jak ten:

Error detected... 
tag=508170375
context=AADSTS50011 Description: (pii), Domain: MSAIMSIDOAuthErrorDomain.Error was thrown in location: Broker 
errorCode=-51411 
status=Response_Status.Status_Unexpected 

Po skonfigurowaniu można wywołać acquire_token_interactive, aby uzyskać token.

result = app.acquire_token_interactive(["User.ReadBasic.All"],
                    parent_window_handle=app.CONSOLE_WINDOW_HANDLE)

Note

Parametr parent_window_handle jest wymagany, mimo że w systemie macOS nie jest używany. W przypadku aplikacji z graficznym interfejsem użytkownika lokalizacja monitu logowania zostanie określona ad hoc i obecnie nie może być powiązana z określonym oknem. W przyszłej aktualizacji ten parametr zostanie użyty do określenia rzeczywistego okna nadrzędnego .

Buforowanie tokenów

Broker uwierzytelniania obsługuje buforowanie tokenów odświeżania i dostępu. Nie trzeba konfigurować niestandardowego buforowania.

Obsługiwane wersje i architektury systemu macOS

Broker systemu macOS obsługuje następujące konfiguracje:

Component Obsługiwane wersje
Architektura ARM64 (Apple Silicon) i x64 (Intel)
Wersja systemu macOS macOS 10.15 (Catalina) i nowsze

Wskazówka

Zalecamy zaktualizowanie do najnowszej wersji systemu macOS w celu zapewnienia zgodności z najnowszymi funkcjami zabezpieczeń i możliwościami brokera.