Delen via


Een desktop-app die web-API's aanroept: codeconfiguratie

Van toepassing op: Groene cirkel met een wit vinkje dat aangeeft dat de volgende inhoud van toepassing is op werknemerstenants. Werknemerstenants (meer informatie)

Dit artikel bevat instructies voor het configureren van de code met de coördinaten van de toepassing.

Vereiste voorwaarden

  • Registreer een nieuwe app in het Microsoft Entra-beheercentrum, alleen geconfigureerd voor accounts in deze organisatiemap. Raadpleeg Een applicatie registreren voor meer details. Noteer de volgende waarden van de Overview pagina van de applicatie voor later gebruik.
    • Applicatie (client) ID
    • ID van de directory (tenant)

Een platformomleidings-URI toevoegen

Voer de volgende stappen uit om uw app-type op te geven voor uw app-registratie:

  1. Selecteer onder BeherenAuthenticatie>Platform toevoegen>voor mobiele toepassingen en desktoptoepassingen
  2. Kies een van de volgende opties, afhankelijk van de verificatiemethode die u gebruikt:
    • Gebruik de exacte waarde voor apps die ingesloten browsers gebruiken: https://login.microsoftonline.com/common/oauth2/nativeclient
    • Gebruik de exacte waarde voor apps die systeembrowsers gebruiken: http://localhost
    • Objective-C of Swift-apps voor macOS: msauth.<your.app.bundle.id>://auth.
    • Node.js Electron-apps: msal{Your_Application/Client_Id}://auth

Opmerking

Voor WAM-apps (Web Authentication Manager) is geen omleidings-URI nodig in MSAL.

Openbare clientstroom inschakelen

Als u de apparaatcodestroom, geïntegreerde Windows-verificatie en een gebruikersnaam en een wachtwoord van een vertrouwelijke clienttoepassing wilt onderscheiden met behulp van een clientreferentiestroom die wordt gebruikt in daemon-toepassingen, waarvoor geen omleidings-URI is vereist, configureert u deze als een openbare clienttoepassing. Om deze configuratie te bereiken

Volg deze stappen om uw app te identificeren als een openbare client:

  1. Onder Beheren, selecteer Verificatie.

  2. Selecteer Ja onder Geavanceerde instellingen voor openbare clientstromen toestaan.

  3. Selecteer Opslaan om uw wijzigingen op te slaan.

Microsoft-bibliotheken die desktop-apps ondersteunen

De volgende Microsoft-bibliotheken ondersteunen desktop-apps:

Taal en framework Project aan de gang
GitHub
Pakket Verkrijgen
begonnen
Gebruikers aanmelden Toegang krijgen tot web-API's Algemeen beschikbaar (GA) of
Openbare preview1
Elektron MSAL-Node.js msal-node Bibliotheek kan id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. Publieke preview
Java MSAL4J msal4j Bibliotheek kan id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. Algemene Vergadering
macOS (Swift/Obj-C) MSAL voor iOS en macOS MSAL Handleiding Bibliotheek kan id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. Algemene Vergadering
UWP (Universal Windows Platform) MSAL.NET Microsoft.Identity.Client Handleiding Bibliotheek kan id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. Algemene Vergadering
WPF (Windows Presentation Foundation) MSAL.NET Microsoft.Identity.Client Handleiding Bibliotheek kan id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. Algemene Vergadering

1Universele licentievoorwaarden voor onlineservices zijn van toepassing op bibliotheken in openbare preview.

Publieke clienttoepassing

Vanuit het oogpunt van code zijn desktoptoepassingen openbare clienttoepassingen. De configuratie verschilt enigszins afhankelijke van of u interactieve verificatie gebruikt of niet.

U moet MSAL.NET IPublicClientApplication bouwen en aanpassen.

IPublicClientApplication

Uitsluitend per code

Met de volgende code wordt een openbare clienttoepassing gestart, en gebruikers aangemeld in de openbare cloud van Microsoft Azure, met een werk- of schoolaccount, of met hun persoonlijke Microsoft-account.

IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientId)
    .Build();

Als u van plan bent om interactieve verificatie of apparaatcodestroom te gebruiken, gebruikt u de wijzigingsfunctie .WithRedirectUri, zoals eerder getoond.

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithDefaultRedirectUri()
        .Build();

Configuratiebestanden gebruiken

Met de volgende code wordt een openbare clienttoepassing gestart vanuit een configuratieobject. Dit kan programmatisch kan worden ingevuld of uit een configuratiebestand worden gelezen.

PublicClientApplicationOptions options = GetOptions(); // your own method
IPublicClientApplication app = PublicClientApplicationBuilder.CreateWithApplicationOptions(options)
        .WithDefaultRedirectUri()
        .Build();

Uitgebreidere configuratie

U kunt de toepassing uitbouwen door een aantal wijzigingsfuncties toe te voegen. Als u bijvoorbeeld wilt dat uw toepassing een toepassing met meerdere tenants is in een nationale cloud (zoals de Amerikaanse overheid in dit voorbeeld), kunt u het volgende schrijven:

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithDefaultRedirectUri()
        .WithAadAuthority(AzureCloudInstance.AzureUsGovernment,
                         AadAuthorityAudience.AzureAdMultipleOrgs)
        .Build();

MSAL.NET bevat ook een wijzigingsfunctie voor Active Directory Federation Services 2019:

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithAdfsAuthority("https://consoso.com/adfs")
        .Build();

Als u ten slotte tokens wilt verkrijgen voor een Azure AD B2C-tenant (Azure Active Directory), geeft u uw tenant op zoals wordt weergegeven in het volgende codefragment:

IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
        .WithB2CAuthority("https://fabrikamb2c.b2clogin.com/tfp/{tenant}/{PolicySignInSignUp}")
        .Build();

Meer informatie

Voor meer informatie over het configureren van een MSAL.NET desktoptoepassing:

  • Zie de referentiedocumentatie PublicClientApplicationBuilderPublicClientApplicationBuilder voor een lijst met alle beschikbare wijzigingsfuncties.
  • Zie PublicClientApplicationOptions in de referentiedocumentatie voor een beschrijving van alle opties die worden weergegeven in .

Volledig voorbeeld met configuratieopties

Stel u een .NET-consoletoepassing voor met het volgende appsettings.json configuratiebestand:

{
  "Authentication": {
    "AzureCloudInstance": "AzurePublic",
    "AadAuthorityAudience": "AzureAdMultipleOrgs",
    "ClientId": "00001111-aaaa-2222-bbbb-3333cccc4444"
  },

  "WebAPI": {
    "MicrosoftGraphBaseEndpoint": "https://graph.microsoft.com"
  }
}

U hebt weinig code om in dit bestand te lezen met behulp van het via .NET geleverde configuratieframework:

public class SampleConfiguration
{
 /// <summary>
 /// Authentication options
 /// </summary>
 public PublicClientApplicationOptions PublicClientApplicationOptions { get; set; }

 /// <summary>
 /// Base URL for Microsoft Graph (it varies depending on whether the application runs
 /// in Microsoft Azure public clouds or national or sovereign clouds)
 /// </summary>
 public string MicrosoftGraphBaseEndpoint { get; set; }

 /// <summary>
 /// Reads the configuration from a JSON file
 /// </summary>
 /// <param name="path">Path to the configuration json file</param>
 /// <returns>SampleConfiguration as read from the json file</returns>
 public static SampleConfiguration ReadFromJsonFile(string path)
 {
  // .NET configuration
  IConfigurationRoot Configuration;
  var builder = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile(path);
  Configuration = builder.Build();

  // Read the auth and graph endpoint configuration
  SampleConfiguration config = new SampleConfiguration()
  {
   PublicClientApplicationOptions = new PublicClientApplicationOptions()
  };
  Configuration.Bind("Authentication", config.PublicClientApplicationOptions);
  config.MicrosoftGraphBaseEndpoint =
  Configuration.GetValue<string>("WebAPI:MicrosoftGraphBaseEndpoint");
  return config;
 }
}

Schrijf nu de volgende code om uw toepassing te maken:

SampleConfiguration config = SampleConfiguration.ReadFromJsonFile("appsettings.json");
var app = PublicClientApplicationBuilder.CreateWithApplicationOptions(config.PublicClientApplicationOptions)
           .WithDefaultRedirectUri()
           .Build();

Voordat de aanroep bij de .Build() methode wordt uitgevoerd, kunt u de configuratie overschrijven met aanroepen naar .WithXXX methoden, zoals eerder getoond.

Volgende stappen

Ga verder met het volgende artikel in dit scenario: Een token ophalen voor de desktop-app.