Authentifizierung mit den Azure Mobile Services
Dieser Artikel ist ein Gastbeitrag von Dino, welcher sonst für Tech-Impact.de Beiträge verfasst und für RefreshButton.net entwickelt. Mit Windows Azure bietet Microsoft einen umfangreichen Cloud-Service an, zu dem unter anderem die Azure Mobile Services gehören. Die Mobile Services ermöglichen Dir im Handumdrehen ein Data-Backend für Deine App zu erstellen. Um die vorhandenen Daten in den Datenbanken vor unerlaubtem Zugriff zu schützen bzw. den Zugriff auf registrierte Nutzer zu beschränken, hast Du die Wahl zwischen verschiedenen Identity-Providern. Wir wollen uns im heutigen Beispiel ansehen, wie wir den Microsoft Account eines Nutzers dazu verwenden können, um ihn für den Zugriff auf unsere Datenbank zu authentifizieren. Neben dem Microsoft Account bietet Azure noch Google, Twitter und Facebook als Identity-Provider an. Das gezeigte Verfahren lässt sich leicht auf alle übertragen.
Microsoft bietet jedem Interessierten eine 90-Tage Testversion für Windows Azure an, solltest Du noch kein Konto eingerichtet haben, kannst Du das hier nachholen. Wenn Du noch keinen Mobile Service eingerichtet hast, wähle im Dashboard in der Navigation links die „Mobilen Dienste“ und klicke dann unten links auf „Neu„. Folge den Anweisungen, um Deinen Mobile Service zu erstellen. Ist der Mobile Service erstellt, kannst Du ihn nun anwählen:
Wechsle nun zum Dashboard des Mobile Service, um Dir dort die URL des mobilen Service zu notieren, diese wird benötigt um die Zuordnung des Service mit den Identity Provider herstellen zu können. Die URL findest Du etwa mittig rechts im Bild. Diese URL solltest Du übrigens nicht weitergeben, um Missbrauch zu vermeiden:
Als nächstes müssen wir die App erstellen. Wechsle dazu bspw. zum Windows Store Dashboard und erstelle dort eine neue App. Du kannst natürlich auch eine bereits vorhandene App nutzen. Ist dies getan, müssen wir nun in das Live Connect Developer Center wechseln, um dort die Konfiguration vorzunehmen. Bitte achte hier darauf, dass Du für alle Portale den gleichen Microsoft Account nutzt. Im Dashboard des Live Connect Developer Centers solltest Du nun die vorher angelegte App sehen. Klicke sie an und öffne damit ihre Detailansicht. Wähle nun „Einstellungen bearbeiten“ unterhalb des App Namens und dort wählst Du „API Einstellungen“:
Hier notierst Du dir bitte die Client ID und das Client Geheimschlüssel. Außerdem gibst Du hier die URL des mobile Service ein. Klicke auf „Speichern“ und schließe dieses Fenster. Hier gilt übrigens auch wieder: Du solltest den Geheimschlüssel mit niemandem teilen! Zurück im Azure Dashboard Deines Mobile Service wählst Du nun das „Identität“ Tab und trägst dort für den Microsoft Account die Client ID und den Geheimschlüssel ein, dann klickst Du auf speichern:
Nun müssen wir nur noch, falls nicht schon beim erstellen des Mobile Service geschehen, den Zugriff auf die Datenbanken auf authentifizierte Nutzer beschränken. Klicke dazu auf das „Daten“ Tab im Dashboard und wähle die entsprechende Datenbank-Tabelle. Dann wechselst Du zum „Berechtigungen“ Tab und nimmst dort die Einstellung vor. Speichern nicht vergessen:
Wir sind fast soweit. Nun fehlt nur noch der entsprechende Code in unserer App, um die Authentifizierung durchzuführen. Öffne dein App Projekt in Visual Studio und füge die folgende Methode an geeigneter Stelle ein, vorher solltest Du den Namespace Windows.UI.Popups noch einbinden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
private MobileServiceUser user; private async System.Threading.Tasks.Task Authenticate() { while (user == null) { string message; try { user = await App.MobileService.LoginAsync(MobileServiceAuthenticationProvider.Microsoft); message = string.Format("You are now logged in - {0}", user.UserId); } catch (InvalidOperationException) { message = "You must log in. Login Required"; } var dialog = new MessageDialog(message); dialog.Commands.Add(new UICommand("OK")); await dialog.ShowAsync(); } } |
Zu guter Letzt müssen wir nur noch diese Methode aufrufen. Am Besten erledigen wir das in der OnNavigatedTo-Methode unserer MainPage:
1 2 3 4 |
protected override async void OnNavigatedTo(NavigationEventArgs e) { await Authenticate(); } |
Fertig. Nun können wir mit unserer App Nutzer authentifizieren und die Azure Mobile Services noch effektiver nutzen. Ich hoffe ich konnte Dir bei der Entwicklung Deiner App helfen, solltest Du weitere Fragen zum Thema haben, zögere nicht mich unter dino@RefreshButton.net zu kontaktieren. Viele weitere nützliche Anleitungen und Tipps zum Thema, findest Du im Azure Developer Center.