Sdílet prostřednictvím


Ověřování aplikací Pythonu ve službách Azure během místního vývoje s využitím zprostředkovaného ověřování

Zprostředkované ověřování shromažďuje přihlašovací údaje uživatele pomocí zprostředkovatele ověřování systému k ověření aplikace. Zprostředkovatel ověřování systému je aplikace spuštěná na počítači uživatele, který spravuje ověřování handshakes a údržbu tokenů pro všechny připojené účty.

Zprostředkované ověřování nabízí následující výhody:

  • Povolí jednotné Sign-On (SSO): Umožňuje aplikacím zjednodušit ověřování uživatelů pomocí ID Microsoft Entra a chránit obnovovací tokeny Microsoft Entra ID před exfiltrací a zneužitím.
  • Rozšířené zabezpečení: Mnoho vylepšení zabezpečení se dodává se zprostředkovatelem, aniž by bylo nutné aktualizovat logiku aplikace.
  • Vylepšená podpora funkcí: S pomocí zprostředkovatele můžou vývojáři přistupovat k bohatým možnostem operačního systému a služeb.
  • Integrace systému: Aplikace, které používají modul plug-and-play zprostředkovatele s integrovaným výběrem účtu, umožňuje uživateli rychle vybrat existující účet místo opětovného zadávání stejných přihlašovacích údajů.
  • Ochrana tokenů: Zajišťuje, že jsou obnovovací tokeny vázané na zařízení a umožňují aplikacím získávat přístupové tokeny vázané na zařízení. Viz Ochrana tokenů.

Systém Windows poskytuje zprostředkovatele ověřování s názvem Správce webových účtů (WAM). WAM umožňuje poskytovatelům identity, jako je Microsoft Entra ID, nativně připojit k operačnímu systému a poskytovat aplikacím zabezpečené přihlašovací služby. Zprostředkované ověřování umožňuje aplikaci pro všechny operace povolené interaktivními přihlašovacími údaji.

Podporují se osobní účty Microsoft a pracovní nebo školní účty. V podporovaných verzích Windows se výchozí uživatelské rozhraní založené na prohlížeči nahrazuje plynulejším prostředím ověřování, podobně jako integrované aplikace pro Windows.

macOS nativně neobsahuje integrovaného zprostředkovatele ověřování. Klientská knihovna Azure Identity implementuje zprostředkované funkce ověřování pomocí mechanismů specifických pro platformu a může se integrovat s aplikacemi, jako je Portál společnosti Microsoft při správě zařízení. Další informace najdete v modulu plug-in Microsoft Enterprise SSO pro zařízení Apple.

Linux používá jako zprostředkovatele ověřování jednotné přihlašování Microsoftu pro Linux .

Konfigurace aplikace pro zprostředkované ověřování

Pokud chcete ve své aplikaci povolit zprostředkované ověřování, postupujte takto:

  1. Na webu Azure Portal přejděte na MICROSOFT Entra ID a v nabídce vlevo vyberte Registrace aplikací .

  2. Vyberte registraci aplikace, a pak vyberte ověřování.

  3. Přidejte do registrace aplikace odpovídající identifikátor URI přesměrování prostřednictvím konfigurace platformy:

    1. V části Konfigurace platformy vyberte + Přidat platformu.

    2. V části Konfigurovat platformy vyberte dlaždici pro váš typ aplikace (platformu) a nakonfigurujte její nastavení, jako jsou mobilní a desktopové aplikace.

    3. V identifikátorech URI pro vlastní přesměrování zadejte následující identifikátor URI přesměrování pro vaši platformu:

      Platforma Přesměrování URI
      Windows 10+ nebo WSL ms-appx-web://Microsoft.AAD.BrokerPlugin/{your_client_id}
      macOS msauth.com.msauth.unsignedapp://auth pro nepodepsané aplikace
      msauth.{bundle_id}://auth pro podepsané aplikace
      Operační systém Linux https://login.microsoftonline.com/common/oauth2/nativeclient

      Nahraďte nebo {your_client_id} nahraďte {bundle_id}ID aplikace (klienta) z podokna Přehled registrace aplikace.

    4. Vyberte a nakonfigurujte.

    Další informace najdete v tématu Přidání identifikátoru URI přesměrování do registrace aplikace.

  4. Zpět v podokně Ověřování v části Upřesnit nastavení vyberte Ano pro Povolit toky veřejného klienta.

  5. Chcete-li použít změny, vyberte Uložit .

  6. Pokud chcete aplikaci autorizovat pro konkrétní prostředky, přejděte na příslušný prostředek, vyberte oprávnění rozhraní APIa povolte Microsoft Graph a další prostředky, ke které chcete získat přístup.

    Důležité

    Při prvním přihlášení musíte být také správcem vašeho tenanta, abyste udělili souhlas s vaší aplikací.

Přiřaďte role

Pokud chcete úspěšně spustit kód aplikace s zprostředkovaným ověřováním, udělte svému uživatelskému účtu oprávnění pomocí řízení přístupu na základě role v Azure (RBAC). Přiřaďte příslušné roli k vašemu uživatelskému účtu pro příslušnou službu Azure. Například:

  • Azure Blob Storage: Přiřaďte roli Přispěvatel dat účtu úložiště .
  • Azure Key Vault: Přiřaďte roli Tajné kódy služby Key Vault .

Pokud je aplikace zadaná, musí mít nastavená oprávnění rozhraní API pro user_impersonation Access Azure Storage (krok 6 v předchozí části). Toto oprávnění rozhraní API umožňuje aplikaci přístup k úložišti Azure jménem přihlášeného uživatele po udělení souhlasu během přihlašování.

Implementace kódu

Následující příklad ukazuje použití InteractiveBrowserBrokerCredential k ověření pomocí BlobServiceClient:

  1. Nainstalujte balíčky. pywin32 se použije v systému Windows k načtení okna aktuálně v popředí.

    pip install azure-identity-broker pywin32
    
  2. Získejte odkaz na nadřazené okno, ve kterém by se mělo zobrazit dialogové okno pro výběr účtu. V následujícím příkladu kódu to bude řádek:

    current_window_handle = win32gui.GetForegroundWindow()
    
  3. Vytvořte instanci InteractiveBrowserBrokerCredential předáním odkazu na nadřazené okno. V posledním příkladu kódu to bude řádek:

    credential = InteractiveBrowserBrokerCredential(parent_window_handle=current_window_handle)
    
  4. credential Použijte k přístupu ke službě Azure, což je Blob Storage v tomto příkladu.

Tady je poslední příklad kódu:

import win32gui
from azure.identity.broker import InteractiveBrowserBrokerCredential
from azure.storage.blob import BlobServiceClient

# Get the handle of the current window
current_window_handle = win32gui.GetForegroundWindow()

# To authenticate and authorize with an app, use the following line to get a credential and
# substitute the <app_id> and <tenant_id> placeholders with the values for your app and tenant.
# credential = InteractiveBrowserBrokerCredential(parent_window_handle=current_window_handle, client_id=<app_id>, tenant_id=<tenant_id>)
credential = InteractiveBrowserBrokerCredential(parent_window_handle=current_window_handle)
client = BlobServiceClient("https://<storage-account-name>.blob.core.windows.net/", credential=credential)

# Prompt for credentials appears on first use of the client
for container in client.list_containers():
    print(container.name)

Pro přesnější řízení, jako je nastavení časového limitu, můžete zadat konkrétní argumenty do InteractiveBrowserBrokerCredential, například timeout.

Aby se kód úspěšně spustil, musí mít váš uživatelský účet přiřazenou roli Azure v účtu úložiště, která umožňuje přístup k kontejnerům objektů blob, jako je Přispěvatel dat účtu úložiště. Pokud je aplikace zadaná, musí mít nastavená oprávnění rozhraní API pro user_impersonation Access Azure Storage (krok 6 v předchozí části). Toto oprávnění rozhraní API umožňuje aplikaci přístup k úložišti Azure jménem přihlášeného uživatele po udělení souhlasu během přihlašování.

Následující snímek obrazovky ukazuje alternativní interaktivní prostředí zprostředkovaného ověřování:

Snímek obrazovky s přihlašovacím prostředím windows při použití instance InteractiveBrowserCredential s povoleným zprostředkovatelem k ověření uživatele

Důležité

Podpora pro macOS existuje ve azure-identity-broker verzích 1.3.0 a novějších.

Následující příklad ukazuje použití InteractiveBrowserBrokerCredential k ověření pomocí BlobServiceClient.

  1. Nainstalujte balíčky. msal (Microsoft Authentication Library) slouží k poskytnutí konstanty parametru parent_window_handle .

    pip install azure-identity-broker msal
    
  2. Vytvořte instanci InteractiveBrowserBrokerCredential předáním odkazu na nadřazené okno. To vyžaduje, abyste získali odkaz na nadřazené okno, ve kterém by se mělo zobrazit dialogové okno pro výběr účtu (poskytnuté modulem msal ). V následujícím příkladu kódu to bude řádek:

    credential = InteractiveBrowserBrokerCredential(
        parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
    )
    
  3. credential Použijte k přístupu ke službě Azure, což je Blob Storage v tomto příkladu.

Tady je poslední příklad kódu:

from azure.identity.broker import InteractiveBrowserBrokerCredential
from azure.storage.blob import BlobServiceClient
import msal

credential = InteractiveBrowserBrokerCredential(
    parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
)

client = BlobServiceClient("https://<storage-account-name>.blob.core.windows.net/", credential=credential)

# Prompt for credentials appears on first use of the client
for container in client.list_containers():
    print(container.name)

Další informace o používání MSAL Pythonu s ověřovacími zprostředkovateli v systému macOS najdete v tématu Použití MSAL Pythonu s zprostředkovatelem ověřování v systému macOS.

Pro přesnější řízení, jako je nastavení časového limitu, můžete zadat konkrétní argumenty do InteractiveBrowserBrokerCredential, například timeout.

Aby se kód úspěšně spustil, musí mít váš uživatelský účet přiřazenou roli Azure v účtu úložiště, která umožňuje přístup k kontejnerům objektů blob, jako je Přispěvatel dat účtu úložiště. Pokud je aplikace zadaná, musí mít nastavená oprávnění rozhraní API pro user_impersonation Access Azure Storage (krok 6 v předchozí části). Toto oprávnění rozhraní API umožňuje aplikaci přístup k úložišti Azure jménem přihlášeného uživatele po udělení souhlasu během přihlašování.

Následující snímek obrazovky ukazuje alternativní interaktivní prostředí zprostředkovaného ověřování:

Snímek obrazovky znázorňující přihlašovací prostředí systému macOS při použití instance InteractiveBrowserCredential s povoleným zprostředkovatelem k ověření uživatele

Důležité

Podpora Linuxu existuje ve azure-identity-broker verzích 1.3.0 a novějších.

Následující příklad ukazuje použití InteractiveBrowserBrokerCredential k ověření pomocí BlobServiceClient:

  1. Nainstalujte balíčky. msal (Microsoft Authentication Library) slouží k poskytnutí konstanty parametru parent_window_handle .

    pip install azure-identity-broker msal
    
  2. Vytvořte instanci InteractiveBrowserBrokerCredential předáním odkazu na nadřazené okno. To vyžaduje, abyste získali odkaz na nadřazené okno, ve kterém by se mělo zobrazit dialogové okno pro výběr účtu (poskytnuté modulem msal ). V následujícím příkladu kódu to bude řádek:

    credential = InteractiveBrowserBrokerCredential(
        parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
    )
    
  3. credential Použijte k přístupu ke službě Azure, což je Blob Storage v tomto příkladu.

Tady je poslední příklad kódu:

from azure.identity.broker import InteractiveBrowserBrokerCredential
from azure.storage.blob import BlobServiceClient
import msal

credential = InteractiveBrowserBrokerCredential(
    parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
)

client = BlobServiceClient("https://<storage-account-name>.blob.core.windows.net/", credential=credential)

# Prompt for credentials appears on first use of the client
for container in client.list_containers():
    print(container.name)

Před spuštěním tohoto příkladu kódu se ujistěte, že máte v distribuci Linuxu nainstalované závislosti Linuxu . V závislosti na distribuci také existují samostatné pokyny pro WSL.

Pro přesnější řízení, jako je nastavení časového limitu, můžete zadat konkrétní argumenty do InteractiveBrowserBrokerCredential, například timeout.

Aby se kód úspěšně spustil, musí mít váš uživatelský účet přiřazenou roli Azure v účtu úložiště, která umožňuje přístup k kontejnerům objektů blob, jako je Přispěvatel dat účtu úložiště. Pokud je aplikace zadaná, musí mít nastavená oprávnění rozhraní API pro user_impersonation Access Azure Storage (krok 6 v předchozí části). Toto oprávnění rozhraní API umožňuje aplikaci přístup k úložišti Azure jménem přihlášeného uživatele po udělení souhlasu během přihlašování.

Následující video ukazuje alternativní interaktivní zprostředkované ověřování:

Animovaný gif, který ukazuje prostředí pro přihlášení k Linuxu při použití instance InteractiveBrowserCredential s povoleným zprostředkovatelem k ověření uživatele.