Hinzufügen von Authentifizierung zu Ihrer Xamarin Forms-AppAdd authentication to your Xamarin Forms app

Hinweis

Visual Studio App Center unterstützt End-to-End- und integrierte Dienste, die für die Entwicklung mobiler Apps von zentraler Bedeutung sind.Visual Studio App Center supports end to end and integrated services central to mobile app development. Entwickler können Build-, Test- und Verteilungsdienste nutzen, um eine Pipeline für Continuous Integration und Delivery einzurichten.Developers can use Build, Test and Distribute services to set up Continuous Integration and Delivery pipeline. Nach der Bereitstellung der App können Entwickler den Status und die Nutzung ihrer App mithilfe der Analyse- und Diagnosedienste überwachen und mit Benutzern über den Pushdienst interagieren.Once the app is deployed, developers can monitor the status and usage of their app using the Analytics and Diagnostics services, and engage with users using the Push service. Entwickler können auch den Authentifizierungsdienst nutzen, um ihre Benutzer zu authentifizieren, und den Datendienst, um App-Daten dauerhaft in der Cloud zu speichern und zu synchronisieren.Developers can also leverage Auth to authenticate their users and Data service to persist and sync app data in the cloud.

Falls Sie Clouddienste in Ihre mobile Anwendung integrieren möchten, sollten Sie sich noch heute für App Center registrieren.If you are looking to integrate cloud services in your mobile application, sign up with App Center today.

ÜbersichtOverview

In diesem Thema wird die Authentifizierung von Benutzern einer mobilen App Service-App über Ihre Clientanwendung veranschaulicht.This topic shows you how to authenticate users of an App Service Mobile App from your client application. In diesem Tutorial fügen Sie dem Xamarin Forms-Schnellstartprojekt durch Verwenden eines von App Service unterstützten Identitätsanbieters eine Authentifizierungsfunktion hinzu.In this tutorial, you add authentication to the Xamarin Forms quickstart project using an identity provider that is supported by App Service. Nach der erfolgreichen Authentifizierung und Autorisierung durch Ihre mobile App wird die Benutzer-ID angezeigt, und Sie erhalten Zugriff auf beschränkte Tabellendaten.After being successfully authenticated and authorized by your Mobile App, the user ID value is displayed, and you will be able to access restricted table data.

VoraussetzungenPrerequisites

Wir empfehlen Ihnen, zuerst das Tutorial Erstellen einer Xamarin.Forms-App durchzuarbeiten, um für dieses Tutorial das bestmögliche Ergebnis zu erzielen.For the best result with this tutorial, we recommend that you first complete the Create a Xamarin Forms app tutorial. Nach Abschluss dieses Tutorials verfügen Sie über ein Xamarin Forms-Projekt, bei dem es sich um eine TodoList-App für mehrere Plattformen handelt.After you complete this tutorial, you will have a Xamarin Forms project that is a multi-platform TodoList app.

Wenn Sie das heruntergeladene Schnellstart-Serverprojekt nicht verwenden, müssen Sie Ihrem Projekt das Authentifizierungs-Erweiterungspaket hinzufügen.If you do not use the downloaded quick start server project, you must add the authentication extension package to your project. Weitere Informationen zu Servererweiterungspaketen finden Sie unter Work with the .NET backend server SDK for Azure Mobile Apps(in englischer Sprache).For more information about server extension packages, see Work with the .NET backend server SDK for Azure Mobile Apps.

Registrieren Ihrer App für die Authentifizierung und Konfigurieren von App ServicesRegister your app for authentication and configure App Services

Zuerst müssen Sie Ihre App auf der Website eines Identitätsanbieters registrieren und anschließend die vom Anbieter generierten Anmeldeinformationen im Mobile Apps-Back-End festlegen.First, you need to register your app at an identity provider's site, and then you will set the provider-generated credentials in the Mobile Apps back end.

  1. Konfigurieren Sie Ihren bevorzugten Identitätsanbieter anhand der anbieterspezifischen Anweisungen:Configure your preferred identity provider by following the provider-specific instructions:

  2. Wiederholen Sie die oben stehenden Schritte für jeden Anbieter, den Sie in Ihrer App unterstützen möchten.Repeat the previous steps for each provider you want to support in your app.

Hinzufügen Ihrer App zu den zulässigen externen Umleitungs-URLsAdd your app to the Allowed External Redirect URLs

Eine sichere Authentifizierung erfordert, dass Sie ein neues URL-Schema für Ihre App definieren.Secure authentication requires that you define a new URL scheme for your app. Dies ermöglicht dem Authentifizierungssystem die erneute Umleitung an Ihre App, sobald der Authentifizierungsprozess abgeschlossen ist.This allows the authentication system to redirect back to your app once the authentication process is complete. In diesem Tutorial verwenden wir ausschließlich das URL-Schema appname.In this tutorial, we use the URL scheme appname throughout. Sie können jedoch ein beliebiges URL-Schema auswählen und verwenden.However, you can use any URL scheme you choose. Es sollte für Ihre mobile Anwendung eindeutig sein.It should be unique to your mobile application. So aktivieren Sie die Umleitung auf der ServerseiteTo enable the redirection on the server side:

  1. Wählen Sie im Azure-Portal App Service aus.In the Azure portal, select your App Service.

  2. Klicken Sie auf die Menüoption Authentifizierung/Autorisierung.Click the Authentication / Authorization menu option.

  3. Geben Sie in Zulässige externe Umleitungs-URLs url_scheme_of_your_app://easyauth.callback ein.In the Allowed External Redirect URLs, enter url_scheme_of_your_app://easyauth.callback. url_scheme_of_your_app steht in dieser Zeichenfolge für das URL-Schema für Ihre mobile Anwendung.The url_scheme_of_your_app in this string is the URL Scheme for your mobile application. Es sollte der normalen URL-Spezifikation für ein Protokoll folgen (nur aus Buchstaben und Zahlen bestehen und mit einem Buchstaben beginnen).It should follow normal URL specification for a protocol (use letters and numbers only, and start with a letter). Notieren Sie sich die gewählte Zeichenfolge, da Sie später Ihren mobilen Anwendungscode mehrfach mit dem URL-Schema anpassen müssen.You should make a note of the string that you choose as you will need to adjust your mobile application code with the URL Scheme in several places.

  4. Klicken Sie auf OK.Click OK.

  5. Klicken Sie auf Speichern.Click Save.

Einschränken von Berechtigungen für authentifizierte BenutzerRestrict permissions to authenticated users

Standardmäßig können APIs auf Mobile Apps-Back-Ends anonym aufgerufen werden.By default, APIs in a Mobile Apps back end can be invoked anonymously. Als Nächstes müssen Sie den Zugriff auf authentifizierte Clients beschränken.Next, you need to restrict access to only authenticated clients.

  • Node.js-Back-End (über das Azure-Portal):Node.js back end (via the Azure portal) :

    Klicken Sie in den Einstellungen von Mobile Apps auf Einfache Tabellen, und wählen Sie Ihre Tabelle aus.In your Mobile Apps settings, click Easy Tables and select your table. Klicken Sie auf Berechtigungen ändern, wählen Sie für alle Berechtigungen Authenticated access only (Nur authentifizierter Zugriff) aus, und klicken Sie auf Speichern.Click Change permissions, select Authenticated access only for all permissions, and then click Save.

  • .NET-Back-End (C#):.NET back end (C#):

    Navigieren Sie im Serverprojekt zu Controller > TodoItemController.cs.In the server project, navigate to Controllers > TodoItemController.cs. Fügen Sie das [Authorize]-Attribut der TodoItemController-Klasse wie folgt hinzu:Add the [Authorize] attribute to the TodoItemController class, as follows. Um den Zugriff auf bestimmte Methoden zu beschränken, können Sie dieses Attribut auch nur auf diese Methoden anstelle der Klasse anwenden.To restrict access only to specific methods, you can also apply this attribute just to those methods instead of the class. Veröffentlichen Sie das Serverprojekt erneut.Republish the server project.

      [Authorize]
      public class TodoItemController : TableController<TodoItem>
    
  • Node.js-Back-End (über Node.js-Code) :Node.js backend (via Node.js code) :

    Um für den Zugriff auf Tabellen eine Authentifizierung anzufordern, fügen Sie die folgende Zeile in das Node.js-Serverskript ein:To require authentication for table access, add the following line to the Node.js server script:

      table.access = 'authenticated';
    

    Weitere Details finden Sie unter Gewusst wie: Erzwingen der Authentifizierung für den Zugriff auf Tabellen.For more details, see How to: Require authentication for access to tables. Informationen zum Herunterladen des Schnellstart-Codeprojekts von Ihrer Website finden Sie unter Vorgehensweise: Herunterladen des Schnellstart-Codeprojekts für das Node.js-Back-End mit Git.To learn how to download the quickstart code project from your site, see How to: Download the Node.js backend quickstart code project using Git.

Hinzufügen der Authentifizierung zur portablen KlassenbibliothekAdd authentication to the portable class library

Mobile Apps verwendet die LoginAsync-Erweiterungsmethode auf dem MobileServiceClient, um für einen Benutzer die Anmeldung mit der App Service-Authentifizierung durchzuführen.Mobile Apps uses the LoginAsync extension method on the MobileServiceClient to sign in a user with App Service authentication. In diesem Beispiel wird ein vom Server verwalteter Authentifizierungsfluss verwendet, bei dem in der App die Anmeldeoberfläche des Anbieters angezeigt wird.This sample uses a server-managed authentication flow that displays the provider's sign-in interface in the app. Weitere Informationen finden Sie unter Vom Server verwaltete Authentifizierung.For more information, see Server-managed authentication. Sie können stattdessen auch die vom Client verwaltete Authentifizierung verwenden, um in Ihrer Produktions-App eine bessere Benutzeroberfläche bereitzustellen.To provide a better user experience in your production app, you should consider instead using Client-managed authentication.

Für die Authentifizierung mit einem Xamarin Forms-Projekt definieren Sie in der portablen Klassenbibliothek für die App eine IAuthenticate-Schnittstelle.To authenticate with a Xamarin Forms project, define an IAuthenticate interface in the Portable Class Library for the app. Fügen Sie anschließend der Benutzeroberfläche, die in der portablen Klassenbibliothek definiert ist, die Schaltfläche Anmelden hinzu. Diese Schaltfläche wird zum Starten der Authentifizierung verwendet.Then add a Sign-in button to the user interface defined in the Portable Class Library, which you click to start authentication. Nach der erfolgreichen Authentifizierung werden die Daten aus dem mobilen App-Back-End geladen.Data is loaded from the mobile app backend after successful authentication.

Implementieren Sie die IAuthenticate-Schnittstelle für jede Plattform, die von Ihrer App unterstützt wird.Implement the IAuthenticate interface for each platform supported by your app.

  1. Öffnen Sie in Visual Studio oder Xamarin Studio die Datei „App.cs“ im Projekt mit Portable im Namen, also das Projekt „Portable Klassenbibliothek“. Fügen Sie anschließend die folgende using-Anweisung hinzu:In Visual Studio or Xamarin Studio, open App.cs from the project with Portable in the name, which is Portable Class Library project, then add the following using statement:

     using System.Threading.Tasks;
    
  2. Fügen Sie in „App.cs“ die folgende IAuthenticate-Schnittstellendefinition unmittelbar vor der App-Klassendefinition hinzu.In App.cs, add the following IAuthenticate interface definition immediately before the App class definition.

     public interface IAuthenticate
     {
         Task<bool> Authenticate();
     }
    
  3. Fügen Sie der App-Klasse die folgenden statischen Member hinzu, um die Schnittstelle mit einer plattformspezifischen Implementierung zu initialisieren.To initialize the interface with a platform-specific implementation, add the following static members to the App class.

     public static IAuthenticate Authenticator { get; private set; }
    
     public static void Init(IAuthenticate authenticator)
     {
         Authenticator = authenticator;
     }
    
  4. Öffnen Sie die Datei „TodoList.xaml“ des Projekts „Portable Klassenbibliothek“, und fügen Sie das folgende Button -Element im buttonsPanel -Layoutelement nach der vorhandenen Schaltfläche hinzu:Open TodoList.xaml from the Portable Class Library project, add the following Button element in the buttonsPanel layout element, after the existing button:

       <Button x:Name="loginButton" Text="Sign-in" MinimumHeightRequest="30"
         Clicked="loginButton_Clicked"/>
    

    Diese Schaltfläche löst die vom Server verwaltete Authentifizierung mit Ihrem mobilen App-Back-End aus.This button triggers server-managed authentication with your mobile app backend.

  5. Öffnen Sie die Datei „TodoList.xaml.cs“ im Projekt „Portable Klassenbibliothek“, und fügen Sie der TodoList -Klasse dann das folgende Feld hinzu:Open TodoList.xaml.cs from the Portable Class Library project, then add the following field to the TodoList class:

     // Track whether the user has authenticated.
     bool authenticated = false;
    
  6. Ersetzen Sie die vorhandene OnAppearing -Methode durch den folgenden Code:Replace the OnAppearing method with the following code:

     protected override async void OnAppearing()
     {
         base.OnAppearing();
    
         // Refresh items only when authenticated.
         if (authenticated == true)
         {
             // Set syncItems to true in order to synchronize the data
             // on startup when running in offline mode.
             await RefreshItems(true, syncItems: false);
    
             // Hide the Sign-in button.
             this.loginButton.IsVisible = false;
         }
     }
    

    Mit diesem Code wird sichergestellt, dass die Daten für den Dienst erst aktualisiert werden, nachdem Sie authentifiziert wurden.This code makes sure that data is only refreshed from the service after you have been authenticated.

  7. Fügen Sie der TodoList-Klasse den folgenden Handler für das Clicked-Ereignis hinzu:Add the following handler for the Clicked event to the TodoList class:

     async void loginButton_Clicked(object sender, EventArgs e)
     {
         if (App.Authenticator != null)
             authenticated = await App.Authenticator.Authenticate();
    
         // Set syncItems to true to synchronize the data on startup when offline is enabled.
         if (authenticated == true)
             await RefreshItems(true, syncItems: false);
     }
    
  8. Speichern Sie die Änderungen, und erstellen Sie das Projekt „Portable Klassenbibliothek“ erneut, um sicherzustellen, dass es fehlerfrei ist.Save your changes and rebuild the Portable Class Library project verifying no errors.

Hinzufügen der Authentifizierung zur Android-AppAdd authentication to the Android app

In diesem Abschnitt wird das Implementieren der IAuthenticate -Schnittstelle im Android-App-Projekt gezeigt.This section shows how to implement the IAuthenticate interface in the Android app project. Überspringen Sie diesen Abschnitt, wenn Sie Android-Geräte nicht unterstützen.Skip this section if you are not supporting Android devices.

  1. Klicken Sie in Visual Studio oder Xamarin Studio mit der rechten Maustaste auf das Projekt droid, und klicken Sie dann auf Als Startprojekt festlegen.In Visual Studio or Xamarin Studio, right-click the droid project, then Set as StartUp Project.

  2. Drücken Sie F5, um das Projekt im Debugger zu starten. Stellen Sie anschließend sicher, dass ein Ausnahmefehler mit dem Statuscode 401 (Nicht autorisiert) ausgelöst wird, nachdem die App gestartet wurde.Press F5 to start the project in the debugger, then verify that an unhandled exception with a status code of 401 (Unauthorized) is raised after the app starts. Der 401-Code wird angezeigt, weil der Zugriff auf dem Back-End nur auf autorisierte Benutzer beschränkt ist.The 401 code is produced because access on the backend is restricted to authorized users only.

  3. Öffnen Sie im Android-Projekt die Datei „MainActivity.cs“, und fügen Sie die folgenden using -Anweisungen hinzu:Open MainActivity.cs in the Android project and add the following using statements:

     using Microsoft.WindowsAzure.MobileServices;
     using System.Threading.Tasks;
    
  4. Aktualisieren Sie die MainActivity-Klasse wie folgt, um die IAuthenticate-Schnittstelle zu implementieren:Update the MainActivity class to implement the IAuthenticate interface, as follows:

     public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity, IAuthenticate
    
  5. Aktualisieren Sie die MainActivity-Klasse, indem Sie wie folgt ein MobileServiceUser-Feld und eine Authenticate-Methode hinzufügen, die für die IAuthenticate-Schnittstelle erforderlich ist:Update the MainActivity class by adding a MobileServiceUser field and an Authenticate method, which is required by the IAuthenticate interface, as follows:

     // Define an authenticated user.
     private MobileServiceUser user;
    
     public async Task<bool> Authenticate()
     {
         var success = false;
         var message = string.Empty;
         try
         {
             // Sign in with Facebook login using a server-managed flow.
             user = await TodoItemManager.DefaultManager.CurrentClient.LoginAsync(this, 
                 MobileServiceAuthenticationProvider.Facebook, "{url_scheme_of_your_app}");
             if (user != null)
             {
                 message = string.Format("you are now signed-in as {0}.",
                     user.UserId);
                 success = true;
             }
         }
         catch (Exception ex)
         {
             message = ex.Message;
         }
    
         // Display the success or failure message.
         AlertDialog.Builder builder = new AlertDialog.Builder(this);
         builder.SetMessage(message);
         builder.SetTitle("Sign-in result");
         builder.Create().Show();
    
         return success;
     }
    

    Falls Sie einen anderen Identitätsanbieter als Facebook verwenden, müssen Sie für MobileServiceAuthenticationProvidereinen anderen Wert auswählen.If you are using an identity provider other than Facebook, choose a different value for MobileServiceAuthenticationProvider.

  6. Aktualisieren Sie die Datei AndroidManifest.xml, indem Sie im <application>-Element folgenden XML-Code hinzufügen:Update the AndroidManifest.xml file by adding the following XML inside the <application> element:

    <activity android:name="com.microsoft.windowsazure.mobileservices.authentication.RedirectUrlActivity" android:launchMode="singleTop" android:noHistory="true">
      <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="{url_scheme_of_your_app}" android:host="easyauth.callback" />
      </intent-filter>
    </activity>
    

    Ersetzen Sie {url_scheme_of_your_app} durch Ihr URL-Schema.Replace {url_scheme_of_your_app} with your URL scheme.

  7. Fügen Sie der OnCreate-Methode der MainActivity-Klasse vor dem Aufruf von LoadApplication() den folgenden Code hinzu:Add the following code to the OnCreate method of the MainActivity class before the call to LoadApplication():

     // Initialize the authenticator before loading the app.
     App.Init((IAuthenticate)this);
    

    Mit diesem Code wird sichergestellt, dass der Authentifikator vor dem Laden der App initialisiert wird.This code ensures the authenticator is initialized before the app loads.

  8. Erstellen Sie die App erneut, und führen Sie sie aus. Melden Sie sich dann über den ausgewählten Authentifizierungsanbieter an, und stellen Sie sicher, dass Sie als authentifizierter Benutzer auf Daten zugreifen können.Rebuild the app, run it, then sign in with the authentication provider you chose and verify you are able to access data as an authenticated user.

ProblembehandlungTroubleshooting

Die Anwendung ist mit dem Fehler Java.Lang.NoSuchMethodError: No static method startActivity abgestürzt.The application crashed with Java.Lang.NoSuchMethodError: No static method startActivity

In einigen Fällen werden Konflikte in den Unterstützungspaketen nur als Warnung in Visual Studio angezeigt, aber die Anwendung stürzt zur Laufzeit mit dieser Ausnahme ab.In some cases, conflicts in the support packages displayed as just a warning in the Visual studio, but the application crashes with this exception at runtime. In diesem Fall müssen Sie sicherstellen, dass alle Unterstützungspakete, auf die in Ihrem Projekt verwiesen wird, die gleiche Version aufweisen.In this case you need to make sure that all the support packages referenced in your project have the same version. Das Azure Mobile Apps-NuGet-Paket hat eine Xamarin.Android.Support.CustomTabs-Abhängigkeit für die Android-Plattform. Wenn also das Projekt neuere Unterstützungspakete verwendet, müssen Sie dieses Paket direkt mit der erforderlichen Version installieren, um Konflikte zu vermeiden.The Azure Mobile Apps NuGet package has Xamarin.Android.Support.CustomTabs dependency for Android platform, so if your project uses newer support packages you need to install this package with required version directly to avoid conflicts.

Hinzufügen der Authentifizierung zur iOS-AppAdd authentication to the iOS app

In diesem Abschnitt wird das Implementieren der IAuthenticate -Schnittstelle im iOS-App-Projekt gezeigt.This section shows how to implement the IAuthenticate interface in the iOS app project. Überspringen Sie diesen Abschnitt, wenn Sie iOS-Geräte nicht unterstützen.Skip this section if you are not supporting iOS devices.

  1. Klicken Sie in Visual Studio oder Xamarin Studio mit der rechten Maustaste auf das iOS-Projekt, und klicken Sie dann auf Als Startprojekt festlegen.In Visual Studio or Xamarin Studio, right-click the iOS project, then Set as StartUp Project.

  2. Drücken Sie F5, um das Projekt im Debugger zu starten. Stellen Sie anschließend sicher, dass ein Ausnahmefehler mit dem Statuscode 401 (Nicht autorisiert) ausgelöst wird, nachdem die App gestartet wurde.Press F5 to start the project in the debugger, then verify that an unhandled exception with a status code of 401 (Unauthorized) is raised after the app starts. Die 401-Antwort wird angezeigt, weil der Zugriff auf dem Back-End nur auf autorisierte Benutzer beschränkt ist.The 401 response is produced because access on the backend is restricted to authorized users only.

  3. Öffnen Sie die Datei „AppDelegate.cs“ im iOS-Projekt, und fügen Sie die folgenden using -Anweisungen hinzu:Open AppDelegate.cs in the iOS project and add the following using statements:

     using Microsoft.WindowsAzure.MobileServices;
     using System.Threading.Tasks;
    
  4. Aktualisieren Sie die AppDelegate-Klasse wie folgt, um die IAuthenticate-Schnittstelle zu implementieren:Update the AppDelegate class to implement the IAuthenticate interface, as follows:

     public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate, IAuthenticate
    
  5. Aktualisieren Sie die AppDelegate-Klasse, indem Sie wie folgt ein MobileServiceUser-Feld und eine Authenticate-Methode hinzufügen, die für die IAuthenticate-Schnittstelle erforderlich ist:Update the AppDelegate class by adding a MobileServiceUser field and an Authenticate method, which is required by the IAuthenticate interface, as follows:

     // Define an authenticated user.
     private MobileServiceUser user;
    
     public async Task<bool> Authenticate()
     {
         var success = false;
         var message = string.Empty;
         try
         {
             // Sign in with Facebook login using a server-managed flow.
             if (user == null)
             {
                 user = await TodoItemManager.DefaultManager.CurrentClient
                     .LoginAsync(UIApplication.SharedApplication.KeyWindow.RootViewController,
                     MobileServiceAuthenticationProvider.Facebook, "{url_scheme_of_your_app}");
                 if (user != null)
                 {
                     message = string.Format("You are now signed-in as {0}.", user.UserId);
                     success = true;
                 }
             }
         }
         catch (Exception ex)
         {
            message = ex.Message;
         }
    
         // Display the success or failure message.
         UIAlertController avAlert = UIAlertController.Create("Sign-in result", message, UIAlertControllerStyle.Alert);
         avAlert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
         UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(avAlert, true, null);
    
         return success;
     }
    

    Falls Sie einen anderen Identitätsanbieter als Facebook verwenden, müssen Sie für [MobileServiceAuthenticationProvider] einen anderen Wert auswählen.If you are using an identity provider other than Facebook, choose a different value for [MobileServiceAuthenticationProvider].

  6. Aktualisieren Sie die Klasse AppDelegate, indem Sie die OpenUrl-Methodenüberladung wie folgt hinzufügen:Update the AppDelegate class by adding the OpenUrl method overload, as follows:

     public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
     {
         return TodoItemManager.DefaultManager.CurrentClient.ResumeWithURL(url);
     }
    
  7. Fügen Sie der FinishedLaunching-Methode vor dem Aufruf von LoadApplication() die folgende Codezeile hinzu:Add the following line of code to the FinishedLaunching method before the call to LoadApplication():

     App.Init(this);
    

    So wird sichergestellt, dass der Authentifikator vor dem Laden der App initialisiert wird.This code ensures the authenticator is initialized before the app is loaded.

  8. Öffnen Sie „Info.plist“, und fügen Sie einen URL-Typ hinzu.Open Info.plist and add a URL Type. Legen Sie als Bezeichner einen Namen Ihrer Wahl fest. Legen Sie außerdem für URL-Schemas das URL-Schema für Ihre App und für Rolle die Option „Keine“ fest.Set the Identifier to a name of your choosing, the URL Schemes to the URL scheme for your app, and the Role to None.

  9. Erstellen Sie die App erneut, und führen Sie sie aus. Melden Sie sich dann über den ausgewählten Authentifizierungsanbieter an, und stellen Sie sicher, dass Sie als authentifizierter Benutzer auf Daten zugreifen können.Rebuild the app, run it, then sign in with the authentication provider you chose and verify you are able to access data as an authenticated user.

Hinzufügen der Authentifizierung zu Windows 10-App-Projekten (einschließlich Windows Phone)Add authentication to Windows 10 (including Phone) app projects

In diesem Abschnitt wird das Implementieren der IAuthenticate-Schnittstelle in Windows 10-App-Projekten gezeigt.This section shows how to implement the IAuthenticate interface in the Windows 10 app projects. Die gleichen Schritte gelten auch für UWP-Projekte (Universelle Windows-Plattform), nur eben entsprechend mit Verwendung des UWP-Projekts (mit den angegebenen Änderungen).The same steps apply for Universal Windows Platform (UWP) projects, but using the UWP project (with noted changes). Überspringen Sie diesen Abschnitt, wenn Sie Windows-Geräte nicht unterstützen.Skip this section if you are not supporting Windows devices.

  1. Klicken Sie in Visual Studio mit der rechten Maustaste auf das Projekt UWP, und klicken Sie dann auf Als Startprojekt festlegen.In Visual Studio, right-click the UWP project, then Set as StartUp Project.

  2. Drücken Sie F5, um das Projekt im Debugger zu starten. Stellen Sie anschließend sicher, dass ein Ausnahmefehler mit dem Statuscode 401 (Nicht autorisiert) ausgelöst wird, nachdem die App gestartet wurde.Press F5 to start the project in the debugger, then verify that an unhandled exception with a status code of 401 (Unauthorized) is raised after the app starts. Die 401-Antwort wird angezeigt, weil der Zugriff auf dem Back-End nur auf autorisierte Benutzer beschränkt ist.The 401 response happens because access on the backend is restricted to authorized users only.

  3. Öffnen Sie die Datei „MainPage.xaml.cs“ für das Windows-App-Projekt, und fügen Sie die folgenden using -Anweisungen hinzu:Open MainPage.xaml.cs for the Windows app project and add the following using statements:

     using Microsoft.WindowsAzure.MobileServices;
     using System.Threading.Tasks;
     using Windows.UI.Popups;
     using <your_Portable_Class_Library_namespace>;
    

    Ersetzen Sie <your_Portable_Class_Library_namespace> durch den Namespace für Ihre portable Klassenbibliothek.Replace <your_Portable_Class_Library_namespace> with the namespace for your portable class library.

  4. Aktualisieren Sie die MainPage-Klasse wie folgt, um die IAuthenticate-Schnittstelle zu implementieren:Update the MainPage class to implement the IAuthenticate interface, as follows:

     public sealed partial class MainPage : IAuthenticate
    
  5. Aktualisieren Sie die MainPage-Klasse, indem Sie wie folgt ein MobileServiceUser-Feld und eine Authenticate-Methode hinzufügen, die für die IAuthenticate-Schnittstelle erforderlich ist:Update the MainPage class by adding a MobileServiceUser field and an Authenticate method, which is required by the IAuthenticate interface, as follows:

     // Define an authenticated user.
     private MobileServiceUser user;
    
     public async Task<bool> Authenticate()
     {
         string message = string.Empty;
         var success = false;
    
         try
         {
             // Sign in with Facebook login using a server-managed flow.
             if (user == null)
             {
                 user = await TodoItemManager.DefaultManager.CurrentClient
                     .LoginAsync(MobileServiceAuthenticationProvider.Facebook, "{url_scheme_of_your_app}");
                 if (user != null)
                 {
                     success = true;
                     message = string.Format("You are now signed-in as {0}.", user.UserId);
                 }
             }
    
         }
         catch (Exception ex)
         {
             message = string.Format("Authentication Failed: {0}", ex.Message);
         }
    
         // Display the success or failure message.
         await new MessageDialog(message, "Sign-in result").ShowAsync();
    
         return success;
     }
    

    Falls Sie einen anderen Identitätsanbieter als Facebook verwenden, müssen Sie für MobileServiceAuthenticationProvidereinen anderen Wert auswählen.If you are using an identity provider other than Facebook, choose a different value for MobileServiceAuthenticationProvider.

  6. Fügen Sie im Konstruktor für die MainPage-Klasse vor dem Aufruf von LoadApplication() die folgende Codezeile hinzu:Add the following line of code in the constructor for the MainPage class before the call to LoadApplication():

     // Initialize the authenticator before loading the app.
     <your_Portable_Class_Library_namespace>.App.Init(this);
    

    Ersetzen Sie <your_Portable_Class_Library_namespace> durch den Namespace für Ihre portable Klassenbibliothek.Replace <your_Portable_Class_Library_namespace> with the namespace for your portable class library.

  7. Fügen Sie bei Verwendung von UWP der App-Klasse die folgende OnActivated-Methodenüberschreibung hinzu:If you are using UWP, add the following OnActivated method override to the App class:

    protected override void OnActivated(IActivatedEventArgs args)
    {
        base.OnActivated(args);
    
         if (args.Kind == ActivationKind.Protocol)
         {
             ProtocolActivatedEventArgs protocolArgs = args as ProtocolActivatedEventArgs;
             MobileServiceClientExtensions.ResumeWithURL(TodoItemManager.DefaultManager.CurrentClient,protocolArgs.Uri);
         }
    }
    
  8. Öffnen Sie „Package.appxmanifest“, und fügen Sie eine Protokolldeklaration hinzu.Open Package.appxmanifest and add a Protocol declaration. Legen Sie als Anzeigename einen Namen Ihrer Wahl und für Name das URL-Schema für Ihre App fest.Set the Display name to a name of your choosing, and the Name to the URL scheme for you app.

  9. Erstellen Sie die App erneut, und führen Sie sie aus. Melden Sie sich dann über den ausgewählten Authentifizierungsanbieter an, und stellen Sie sicher, dass Sie als authentifizierter Benutzer auf Daten zugreifen können.Rebuild the app, run it, then sign in with the authentication provider you chose and verify you are able to access data as an authenticated user.

Nächste SchritteNext steps

Nachdem Sie dieses einfache Tutorial zur Authentifizierung abgeschlossen haben, können Sie mit den folgenden Tutorials fortfahren:Now that you completed this basic authentication tutorial, consider continuing on to one of the following tutorials:

  • Hinzufügen von Pushbenachrichtigungen zur AppAdd push notifications to your app

    Hier erfahren Sie, wie Sie Ihrer App die Unterstützung von Pushbenachrichtigungen hinzufügen und Ihr Mobile App-Back-End für die Verwendung von Azure Notification Hubs zum Senden von Pushbenachrichtigungen konfigurieren.Learn how to add push notifications support to your app and configure your Mobile App backend to use Azure Notification Hubs to send push notifications.

  • Aktivieren der Offlinesynchronisierung für Ihre AppEnable offline sync for your app

    Erfahren Sie, wie Sie mithilfe eines Mobile App-Back-Ends Ihrer App Offlineunterstützung hinzufügen.Learn how to add offline support your app using a Mobile App backend. Die Offlinesynchronisierung ermöglicht Endbenutzern die Interaktion mit einer mobilen App (Anzeigen, Hinzufügen und Ändern von Daten) auch ohne Netzwerkverbindung.Offline sync allows end users to interact with a mobile app - viewing, adding, or modifying data - even when there is no network connection.