Delen via


.NET-apps verifiëren bij Azure-services tijdens lokale ontwikkeling met behulp van brokered-verificatie

Brokered-verificatie verzamelt gebruikersreferenties met behulp van de systeemverificatiebroker om een app met InteractiveBrowserCredentialte verifiëren. Een systeemverificatiebroker is een app die wordt uitgevoerd op de computer van een gebruiker waarmee de verificatiehanddruk en tokenonderhoud voor alle verbonden accounts worden beheerd.

Brokered-verificatie biedt de volgende voordelen:

  • Hiermee schakelt u Eenmalige Sign-On (SSO) in: Hiermee kunnen apps vereenvoudigen hoe gebruikers zich verifiëren met Microsoft Entra ID en worden vernieuwingstokens van Microsoft Entra ID beschermd tegen exfiltratie en misbruik.
  • Verbeterde beveiliging: Veel beveiligingsverbeteringen worden geleverd met de broker, zonder dat u de app-logica hoeft bij te werken.
  • Verbeterde functieondersteuning: Met behulp van de broker hebben ontwikkelaars toegang tot uitgebreide besturingssysteem- en servicemogelijkheden.
  • Systeemintegratie: Toepassingen die gebruikmaken van de broker plug-and-play met de ingebouwde accountkiezer, zodat de gebruiker snel een bestaand account kan kiezen in plaats van dezelfde referenties telkens opnieuw in te voeren.
  • Beveiliging van tokens: Zorgt ervoor dat de vernieuwingstokens apparaatgebonden zijn en apps in staat stelt om apparaatgebonden toegangstokens te verkrijgen. Zie Tokenbeveiliging.

Windows biedt een verificatiebroker met de naam Web Account Manager (WAM). MET WAM kunnen id-providers zoals Microsoft Entra ID systeemeigen worden aangesloten op het besturingssysteem en veilige aanmeldingsservices bieden aan apps. Met brokered-verificatie kan de app worden ingeschakeld voor alle bewerkingen die zijn toegestaan door de interactieve aanmeldingsreferenties.

Persoonlijke Microsoft-accounts en werk- of schoolaccounts worden ondersteund. In ondersteunde Windows-versies wordt de standaardgebruikersinterface op basis van een browser vervangen door een soepelere verificatie-ervaring, vergelijkbaar met ingebouwde Windows-apps.

macOS bevat geen ingebouwde verificatiebroker. Brokered-verificatie wordt ondersteund via de Azure.Identity.Broker bibliotheek, die platformspecifieke mechanismen gebruikt en kan worden geïntegreerd met apps zoals Microsoft-bedrijfsportal wanneer apparaten worden beheerd. Zie microsoft Enterprise SSO-invoegtoepassing voor Apple-apparaten voor meer informatie.

Linux gebruikt eenmalige aanmelding van Microsoft voor Linux als verificatiebroker.

De app configureren voor brokered authentication

Voer de volgende stappen uit om brokered verificatie in te schakelen in uw toepassing:

  1. Navigeer in Azure Portal naar Microsoft Entra ID en selecteer App-registraties in het menu aan de linkerkant.

  2. Selecteer de registratie voor uw app en selecteer vervolgens Verificatie.

  3. Voeg de juiste omleidings-URI toe aan uw app-registratie via een platformconfiguratie:

    1. Selecteer onder Platformconfiguratiesde optie + Een platform toevoegen.

    2. Selecteer onder Platformen configureren de tegel voor uw toepassingstype (platform) om de instellingen te configureren, zoals mobiele en bureaubladtoepassingen.

    3. Voer in aangepaste omleidings-URI's de volgende omleidings-URI voor uw platform in:

      Platform Omleidings-URI
      Windows 10+ of WSL ms-appx-web://Microsoft.AAD.BrokerPlugin/{your_client_id}
      macOS msauth.com.msauth.unsignedapp://auth voor niet-ondertekende apps
      msauth.{bundle_id}://auth voor ondertekende apps
      Linux https://login.microsoftonline.com/common/oauth2/nativeclient

      Vervang {your_client_id} of {bundle_id} door de toepassings-id (client) in het deelvenster Overzicht van de app-registratie.

    4. Selecteer Configureren.

    Zie Een omleidings-URI toevoegen aan een app-registratie voor meer informatie.

  4. Selecteer in het deelvenster Verificatie onder Geavanceerde instellingenJa voor openbare clientstromen toestaan.

  5. Selecteer Opslaan om de wijzigingen toe te passen.

  6. Als u de toepassing voor specifieke resources wilt autoriseren, gaat u naar de betreffende resource, selecteert u API-machtigingen en schakelt u Microsoft Graph en andere resources in die u wilt openen.

    Belangrijk

    U moet ook de beheerder van uw tenant zijn om toestemming te verlenen aan uw toepassing wanneer u zich voor de eerste keer aanmeldt.

Rollen toewijzen

Als u uw app-code wilt uitvoeren met brokered verificatie, verleent u uw gebruikersaccountmachtigingen met behulp van op rollen gebaseerd toegangsbeheer (RBAC) van Azure. Wijs een geschikte rol toe aan uw gebruikersaccount voor de relevante Azure-service. Voorbeeld:

  • Azure Blob Storage: wijs de rol Inzender voor opslagaccountgegevens toe.
  • Azure Key Vault: Wijs de rol Key Vault Secrets Officer toe.

Als een app is opgegeven, moet api-machtigingen zijn ingesteld voor user_impersonation Toegang tot Azure Storage (stap 6 in de vorige sectie). Met deze API-machtiging kan de app namens de aangemelde gebruiker toegang krijgen tot Azure Storage nadat toestemming is verleend tijdens het aanmelden.

De code implementeren

De Azure Identity-bibliotheek ondersteunt brokered verificatie met behulp van InteractiveBrowserCredential. Als u bijvoorbeeld wilt gebruiken InteractiveBrowserCredential in een TENANT-app voor verificatie bij Azure Key Vault met de SecretClientvolgende stappen:

De Azure Identity-bibliotheek biedt interactieve brokered verificatie met behulp van InteractiveBrowserCredential. Als u bijvoorbeeld wilt gebruiken InteractiveBrowserCredential in een console-app voor verificatie bij Azure Key Vault met de SecretClientvolgende stappen:

  1. Installeer de Azure.Identity - en Azure.Identity.Broker-pakketten .

    dotnet add package Azure.Identity
    dotnet add package Azure.Identity.Broker
    
  2. Haal een verwijzing op naar het bovenliggende venster waarop het dialoogvenster accountkiezer moet worden weergegeven.

  3. Maak een exemplaar van InteractiveBrowserCredential het gebruik InteractiveBrowserCredentialBrokerOptions.

// Get the parent window handle for MAUI on Windows
Microsoft.Maui.Controls.Window? parentWindow = this.GetParentWindow();
Microsoft.UI.Xaml.Window? windowHandle = parentWindow?.Handler?.PlatformView as Microsoft.UI.Xaml.Window;
IntPtr hwnd = windowHandle != null ? WinRT.Interop.WindowNative.GetWindowHandle(windowHandle) : IntPtr.Zero;

// Configure InteractiveBrowserCredentialBrokerOptions with parent window reference
InteractiveBrowserCredentialBrokerOptions options = new(hwnd)
{
    UseDefaultBrokerAccount = true,
};

// Create credential that will use WAM broker on Windows
InteractiveBrowserCredential credential = new(options);

SecretClient client = new(new Uri(KeyVaultUrl), credential);
KeyVaultSecret secret = await client.GetSecretAsync(SecretName);
  1. Installeer de Azure.Identity - en Azure.Identity.Broker-pakketten .

    dotnet add package Azure.Identity
    dotnet add package Azure.Identity.Broker
    

    Opmerking

    macOS-ondersteuning bestaat in Azure.Identity.Broker versie 1.3.0 en hoger.

  2. Haal een verwijzing op naar het bovenliggende venster waarop het dialoogvenster accountkiezer moet worden weergegeven.

  3. Maak een exemplaar van InteractiveBrowserCredential het gebruik InteractiveBrowserCredentialBrokerOptions.

// Get the parent window handle for MAUI on Mac Catalyst
Microsoft.Maui.Controls.Window? parentWindow = this.GetParentWindow();
UIWindow? uiWindow = parentWindow?.Handler?.PlatformView as UIWindow;
IntPtr hwnd = uiWindow != null ? uiWindow.Handle : IntPtr.Zero;

// Configure InteractiveBrowserCredentialBrokerOptions with parent window reference
InteractiveBrowserCredentialBrokerOptions options = new(hwnd)
{
    UseDefaultBrokerAccount = true,
};

// Create credential that will use the broker on macOS
InteractiveBrowserCredential credential = new(options);

SecretClient client = new(new Uri(KeyVaultUrl), credential);
KeyVaultSecret secret = await client.GetSecretAsync(SecretName);
  1. Installeer de Azure.Identity - en Azure.Identity.Broker-pakketten .

    dotnet add package Azure.Identity
    dotnet add package Azure.Identity.Broker
    

    Opmerking

    Linux-ondersteuning bestaat in Azure.Identity.Broker versies 1.3.0 en hoger.

  2. Haal een verwijzing op naar het bovenliggende venster waarop het dialoogvenster accountkiezer moet worden weergegeven.

  3. Maak een exemplaar van InteractiveBrowserCredential het gebruik InteractiveBrowserCredentialBrokerOptions.

/// <summary>
/// Get the handle of the console window for Linux
/// </summary>
[DllImport("libX11")]
static extern IntPtr XOpenDisplay(string display);

[DllImport("libX11")]
static extern IntPtr XRootWindow(IntPtr display, int screen);

try
{
    IntPtr parentWindowHandle = XRootWindow(XOpenDisplay(null), 0);
    Func<IntPtr> consoleWindowHandleProvider = () => parentWindowHandle;

    InteractiveBrowserCredentialBrokerOptions options = new(parentWindowHandle)
    {
        UseDefaultBrokerAccount = true,
    };
    
    // Create the InteractiveBrowserCredential using broker support
    InteractiveBrowserCredential credential = new(options);

    Uri vaultUri = new("https://<your-key-vault-name>.vault.azure.net/");
    SecretClient client = new(vaultUri, credential);

    Console.WriteLine("Retrieving secret 'MySecret' from Key Vault...");
    KeyVaultSecret secret = await client.GetSecretAsync("MySecret");

    return 0;
}

Aanbeveling

Bekijk de volledige voorbeeld-app-code in de GitHub-opslagplaats van .NET-documenten.

In het voorgaande voorbeeld wordt de eigenschap UseDefaultBrokerAccount ingesteld op true, die zich aanmeldt voor een stille, brokered-verificatiestroom met het standaardsysteemaccount. Op deze manier hoeft de gebruiker niet herhaaldelijk hetzelfde account te selecteren. Als stille, brokered verificatie mislukt of UseDefaultBrokerAccount is ingesteld falseop , InteractiveBrowserCredential valt terug op interactieve, brokered verificatie.

In de volgende schermopname ziet u de alternatieve interactieve, brokered authentication-ervaring:

Een schermopname van de aanmeldingservaring van Windows wanneer u een instantie van InteractiveBrowserCredential met broker-enabled gebruikt om een gebruiker te verifiëren.

In de volgende schermopname ziet u de alternatieve interactieve, brokered authentication-ervaring:

Een schermopname van de aanmeldingservaring van macOS bij het gebruik van een interactiveBrowserCredential-exemplaar met broker-enabled om een gebruiker te verifiëren.

In de volgende video ziet u de alternatieve interactieve, brokered verificatie-ervaring:

Een gif-animatie die de aanmeldingservaring voor Linux laat zien wanneer u een instantie van InteractiveBrowserCredential met broker-enabled gebruikt om een gebruiker te verifiëren.