Een mobiele app configureren die web-API's aanroept

Van toepassing op: groene cirkel met een wit vinkje. Werknemershuurders Witte cirkel met een grijs X-symbool. Externe huurders (meer informatie)

Nadat u een toepassing hebt gemaakt, leert u hoe u de code configureert met behulp van de parameters voor app-registratie. Mobiele toepassingen leveren enkele uitdagingen op met betrekking tot het inpassen in het creatieframework.

Microsoft-bibliotheken die mobiele apps ondersteunen

De volgende Microsoft-bibliotheken ondersteunen mobiele apps:

Platform Project over
GitHub
Pakket Krijgen
begonnen
Gebruikers aanmelden Toegang krijgen tot web-API's Algemeen beschikbaar (GA) of
Openbare preview1
Android (Java) MSAL Android MSAL Snelle start Bibliotheek kan id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. GA
Android (Kotlin) MSAL Android MSAL Bibliotheek kan id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. GA
iOS (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. GA
Xamarin (.NET) MSAL.NET Microsoft.Identity.Client Bibliotheek kan id-tokens aanvragen voor aanmelding van gebruikers. Bibliotheek kan toegangstokens aanvragen voor beveiligde web-API's. GA

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

De toepassing instantiëren

Android

Mobiele toepassingen gebruiken de klasse PublicClientApplication. U kunt deze als volgt instantiëren:

Java
PublicClientApplication sampleApp = new PublicClientApplication(
                    this.getApplicationContext(),
                    R.raw.auth_config);

iOS

Mobiele toepassingen op iOS moeten de klasse MSALPublicClientApplication instantiëren. Gebruik de volgende code om de klasse te instantiëren.

Objective-C
NSError *msalError = nil;

MSALPublicClientApplicationConfig *config = [[MSALPublicClientApplicationConfig alloc] initWithClientId:@"<your-client-id-here>"];
MSALPublicClientApplication *application = [[MSALPublicClientApplication alloc] initWithConfiguration:config error:&msalError];
Swift
let config = MSALPublicClientApplicationConfig(clientId: "<your-client-id-here>")
if let application = try? MSALPublicClientApplication(configuration: config){ /* Use application */}

Aanvullende MSALPublicClientApplicationConfig-eigenschappen kunnen de standaardinstantie overschrijven, een omleidings-URI opgeven of het gedrag van MSAL-tokencaching wijzigen.

Xamarin of UWP

In deze sectie wordt uitgelegd hoe u de toepassing kunt instantiëren voor Xamarin.iOS-, Xamarin.Android- en UWP-apps.

Notitie

MSAL.NET versies 4.61.0 en hoger bieden geen ondersteuning voor Universeel Windows-platform (UWP), Xamarin Android en Xamarin iOS. U wordt aangeraden uw Xamarin-toepassingen te migreren naar moderne frameworks zoals MAUI. Lees meer over de afschaffing in Aankondiging van de geplande afschaffing van MSAL.NET voor Xamarin en UWP.

De toepassing instantiëren

In Xamarin of UWP kunt u de toepassing het eenvoudigst instantiëren door de volgende code te gebruiken. In deze code is ClientId de GUID van uw geregistreerde app.

C#
var app = PublicClientApplicationBuilder.Create(clientId)
                                        .Build();

Aanvullende With<Parameter>-methoden stellen de bovenliggende gebruikersinterface in, overschrijven de standaardautorisatie en specificeren een clientnaam en -versie voor telemetrie, een omleidings-URI en de te gebruiken HTTP-factory. De HTTP-factory kan bijvoorbeeld worden gebruikt om proxy's te verwerken en telemetrie en logboekregistratie op te geven.

De volgende gedeelten bevatten meer informatie over het instantiëren van de toepassing.

Geef de bovenliggende gebruikersinterface, het venster of de activiteit op.

Geef op Android de activiteit van de ouder door voordat je de interactieve authenticatie uitvoert. Wanneer u op iOS een broker gebruikt, geef dan ViewController door. Op dezelfde manier wilt u op UWP mogelijk het bovenliggende venster doorgeven. U geeft het door wanneer u het token ophaalt. Maar wanneer u de app maakt, kunt u ook een callback opgeven als gemachtigde die UIParent retourneert.

C#
IPublicClientApplication application = PublicClientApplicationBuilder.Create(clientId)
  .ParentActivityOrWindowFunc(() => parentUi)
  .Build();

Op Android raden we u aan om CurrentActivityPlugin te gebruiken. De resulterende PublicClientApplication-opbouwcode ziet er als volgt uit:

C#
// Requires MSAL.NET 4.2 or above
var pca = PublicClientApplicationBuilder
  .Create("<your-client-id-here>")
  .WithParentActivityOrWindow(() => CrossCurrentActivity.Current)
  .Build();
Meer parameters voor het bouwen van apps zoeken

Zie de PublicClientApplicationBuilder voor alle methoden die beschikbaar zijn in .

Zie de PublicClientApplicationOptions voor een beschrijving van alle opties die worden weergegeven in .

Taken voor MSAL voor iOS en macOS

Deze taken zijn nodig wanneer u MSAL gebruikt voor iOS en macOS:

Taken voor Xamarin.Android

Als u Xamarin.Android gebruikt, voert u de volgende taken uit:

Zie Overwegingen voor Xamarin.Android voor meer informatie.

Zie Xamarin.Android-specifieke overwegingen met MSAL.NET voor overwegingen over de browsers op Android.

Taken voor UWP

Op UWP kunt u bedrijfsnetwerken gebruiken. In de volgende secties worden de taken beschreven die u moet uitvoeren in het bedrijfsscenario.

Zie UWP-specifieke overwegingen met MSAL.NET voor meer informatie.

De toepassing configureren voor het gebruik van de broker

Op Android en iOS schakelen brokers het volgende in:

  • Eenmalige aanmelding (SSO): u kunt eenmalige aanmelding gebruiken voor apparaten die zijn geregistreerd bij Microsoft Entra ID. Wanneer u eenmalige aanmelding gebruikt, hoeven uw gebruikers zich niet bij elke toepassing aan te melden.
  • Apparaatidentificatie: Met deze instelling wordt beleid voor voorwaardelijke toegang ingeschakeld dat is gerelateerd aan Microsoft Entra-apparaten. Het verificatieproces maakt gebruik van het apparaatcertificaat dat is gemaakt toen het apparaat aan de werkplek werd toegevoegd.
  • Verificatie van toepassingsidentificatie: wanneer een toepassing de broker aanroept, wordt de omleidings-URL doorgegeven. Vervolgens controleert de makelaar deze.

De broker inschakelen op Xamarin

Als u de broker op Xamarin wilt inschakelen, gebruikt u de parameter WithBroker() wanneer u de methode PublicClientApplicationBuilder.CreateApplication aanroept. .WithBroker() is standaard ingesteld op waar.

Als u brokered verificatie voor Xamarin.iOS wilt inschakelen, volgt u de stappen in de sectie Xamarin.iOS in dit artikel.

De broker voor MSAL voor Android inschakelen

Zie Brokered verificatie op Android voor meer informatie over het inschakelen van een broker op Android.

De broker voor MSAL voor iOS en macOS inschakelen

Brokered-verificatie is standaard ingeschakeld voor Microsoft Entra-scenario's in MSAL voor iOS en macOS.

De volgende secties bevatten instructies om uw toepassing te configureren voor ondersteuning van bemiddelde verificatie met behulp van MSAL voor Xamarin.iOS of MSAL voor iOS en macOS. De twee reeksen instructies bevatten enkele verschillende stappen.

Brokered authenticatie inschakelen voor Xamarin iOS

Volg de stappen in deze sectie om uw Xamarin.iOS-app te laten communiceren met de Microsoft Authenticator-app.

Stap 1: Broker-ondersteuning inschakelen

Broker-ondersteuning is standaard uitgeschakeld. U schakelt deze in voor een afzonderlijke PublicClientApplication-klasse. Gebruik de parameter WithBroker() wanneer u de PublicClientApplication-klasse maakt via PublicClientApplicationBuilder. De parameter WithBroker() is standaard ingesteld op true.

C#
var app = PublicClientApplicationBuilder
                .Create(ClientId)
                .WithBroker()
                .WithReplyUri(redirectUriOnIos) // $"msauth.{Bundle.Id}://auth" (see step 6 below)
                .Build();

Stap 2: AppDelegate bijwerken om de callback af te handelen

Wanneer MSAL.NET de broker aanroept, belt de broker vervolgens terug naar uw toepassing. Het roept terug door de AppDelegate.OpenUrl-methode te gebruiken. Omdat MSAL wacht op het antwoord van de broker, moet uw toepassing samenwerken om MSAL.NET terug te roepen. U stelt dit gedrag in door het AppDelegate.cs-bestand bij te werken om de methode te overschrijven, zoals in de volgende code wordt weergegeven.

C#
public override bool OpenUrl(UIApplication app, NSUrl url,
                             string sourceApplication,
                             NSObject annotation)
{
 if (AuthenticationContinuationHelper.IsBrokerResponse(sourceApplication))
 {
  AuthenticationContinuationHelper.SetBrokerContinuationEventArgs(url);
  return true;
 }
 else if (!AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(url))
 {
  return false;
 }
 return true;
}

Deze methode wordt aangeroepen wanneer de toepassing wordt gestart. Het is een mogelijkheid om het antwoord van de broker te verwerken en het verificatieproces te voltooien dat MSAL.NET heeft gestart.

Stap 3: een UIViewController() instellen

Voor Xamarin iOS hoeft u normaal gesproken geen objectvenster in te stellen. Maar in dit geval moet u het zo instellen dat u antwoorden kunt verzenden naar en ontvangen van een broker. Als u een objectvenster wilt instellen, stelt u in AppDelegate.cs een ViewController in.

Voer de volgende stappen uit om het objectvenster in te stellen:

  1. Stel in AppDelegate.cs de App.RootViewController in op een nieuwe UIViewController(). Deze instelling zorgt ervoor dat de aanroep naar de broker UIViewController omvat. Als deze niet juist is ingesteld, wordt mogelijk deze fout weergegeven:

    "uiviewcontroller_required_for_ios_broker":"UIViewController is null, so MSAL.NET cannot invoke the iOS broker. See https://aka.ms/msal-net-ios-broker."

  2. Bij het gesprek AcquireTokenInteractive, gebruik .WithParentActivityOrWindow(App.RootViewController). Geef de verwijzing door naar het objectvenster dat u gaat gebruiken. Hier volgt een voorbeeld:

    In App.cs:

    C#
       public static object RootViewController { get; set; }
    

    In AppDelegate.cs:

    C#
       LoadApplication(new App());
       App.RootViewController = new UIViewController();
    

    In de aanroep AcquireToken:

    C#
    result = await app.AcquireTokenInteractive(scopes)
                 .WithParentActivityOrWindow(App.RootViewController)
                 .ExecuteAsync();
    

Stap 4: Een URL-schema registreren

MSAL.NET gebruikt URL's om de broker aan te roepen en vervolgens het antwoord van de broker naar uw app terug te sturen. Om de rondreis af te ronden, registreer het URL-schema van uw app in het bestand Info.plist.

Voer de volgende stappen uit om het URL-schema van uw app te registreren:

  1. Plaats msauth voor CFBundleURLSchemes.

  2. Voeg CFBundleURLName toe aan het einde. Volg dit patroon:

    $"msauth.(BundleId)"

    Hier identificeert BundleId uw apparaat op unieke wijze. Als bijvoorbeeld BundleIdyourcompany.xforms is, dan is msauth.com.yourcompany.xforms uw URL-schema.

    Dit URL-schema wordt onderdeel van de omleidings-URI die uw app uniek identificeert wanneer deze het antwoord van de broker ontvangt.

    XML
     <key>CFBundleURLTypes</key>
        <array>
          <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLName</key>
            <string>com.yourcompany.xforms</string>
            <key>CFBundleURLSchemes</key>
            <array>
              <string>msauth.com.yourcompany.xforms</string>
            </array>
          </dict>
        </array>
    

Stap 5: Toevoegen aan de sectie LSApplicationQueriesSchemes

MSAL gebruikt –canOpenURL: om te controleren of de broker is geïnstalleerd op het apparaat. In iOS 9 heeft Apple de schema's vergrendeld waarvoor een toepassing query's kan uitvoeren.

Voeg msauthv2 toe aan de sectie LSApplicationQueriesSchemes van het bestand Info.plist, zoals in het volgende voorbeeld:

XML
<key>LSApplicationQueriesSchemes</key>
    <array>
      <string>msauthv2</string>
    </array>

Geïntegreerde authenticatie voor MSAL voor iOS en macOS

Brokered-verificatie is standaard ingeschakeld voor Microsoft Entra-scenario's.

Stap 1: AppDelegate bijwerken om de callback af te handelen

Wanneer MSAL voor iOS en macOS de broker aanroept, geeft de broker een antwoord aan uw toepassing met behulp van de methode openURL. Omdat MSAL wacht op het antwoord van de broker, moet uw toepassing samenwerken om MSAL terug te roepen. U stelt deze mogelijkheid in door het AppDelegate.m-bestand bij te werken om de methode te overschrijven, zoals in de volgende codevoorbeelden wordt weergegeven.

Objective-C
- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
    return [MSALPublicClientApplication handleMSALResponse:url
                                         sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]];
}
Swift
    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {

        guard let sourceApplication = options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String else {
            return false
        }

        return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApplication)
    }

Als u UISceneDelegate in gebruikt hebt genomen op iOS 13 of hoger, plaatst u de MSAL-callback in plaats daarvan in de scene:openURLContexts: van UISceneDelegate. MSAL handleMSALResponse:sourceApplication: mag slechts één keer worden aangeroepen voor elke URL.

Zie de Apple-documentatie voor meer informatie.

Stap 2: Een URL-schema registreren

MSAL voor iOS en macOS gebruikt URL's om de broker aan te roepen en vervolgens het broker-antwoord naar uw app te retourneren. Registreer een URL-schema voor uw app in het bestand Info.plist om de rondrit te voltooien.

Een schema voor uw app registreren:

  1. Voeg het voorvoegsel msauth toe aan uw aangepaste URL-schema.

  2. Voeg uw bundel-id toe aan het einde van uw schema. Volg dit patroon:

    $"msauth.(BundleId)"

    Hier identificeert BundleId uw apparaat op unieke wijze. Als BundleId bijvoorbeeld yourcompany.xforms is, is het URL-schema msauth.com.yourcompany.xforms.

    Dit URL-schema wordt onderdeel van de omleidings-URI die uw app uniek identificeert wanneer deze het antwoord van de broker ontvangt. Zorg ervoor dat de omleidings-URI in de indeling msauth.(BundleId)://auth is geregistreerd voor uw toepassing.

    XML
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>msauth.[BUNDLE_ID]</string>
            </array>
        </dict>
    </array>
    

Stap 3: LSApplicationQueriesSchemes toevoegen

Voeg LSApplicationQueriesSchemes toe om aanroepen naar de Microsoft Authenticator-app toe te staan, als deze is geïnstalleerd.

Notitie

Het msauthv3-schema is nodig wanneer uw app wordt gecompileerd met Xcode 11 en hoger.

Hier volgt een voorbeeld van het toevoegen van LSApplicationQueriesSchemes:

XML
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>msauthv2</string>
  <string>msauthv3</string>
</array>

Brokered verificatie voor Xamarin.Android

Zie Brokered verificatie op Xamarin.Android voor meer informatie over het inschakelen van een broker op Android.

Volgende stappen

Ga verder met het volgende artikel in dit scenario: Een token ophalen.