November 2014

Volume 29 Number 11

Dieser Artikel wurde maschinell übersetzt.

Himmelblau Insider - Security und Identitätsmanagement mit azurblauen Mobile Dienste

Bruno Terkaly | November 2014

Bruno Terkaly Satya Nadella hat das neue Microsoft-Vision-Statement klar definiert. Er hat gesagt, wir leben in einer Welt, die "Mobile -­erste/Cloud-First." Dies ist keine Überraschung. Microsoft wurde Verfolgung mobile und cloud-Technologien seit mehreren Jahren. Die Industrie verändert, und der Druck für IT-Führungskräfte, die Bring-your-eigene-Device (BYOD)-Revolution zu umarmen war nie größer.

Die schöne neue Welt der BYOD im Unternehmen zu unterstützen, ist oberste Priorität. In diesem Artikel, wir helfen Ihnen zu verstehen, wie die Wolke Line-of-Business (LOB) helfen kann Anwendungsentwickler erstellen und Apple iOS, Google Android und Windows Phone apps zu unterstützen. Wir werden die Geräte-Management-Herausforderungen für die Unternehmen aller Größen befassen. Auch umfassen einige der native Objective-C Stücklistenebene wir, die Sie benötigen, um richtig OAuth 2.0-Token von Azure-Mobile-Dienste verwalten. Wesentliche Leistungsmerkmal rettet ein Token sicher auf einem mobilen Gerät so Benutzer sind nicht gezwungen, sich jedes Mal, wenn sie eine Anwendung verwenden möchten.

Hauptmerkmale der LOB-Anwendungen

Es gibt viele Fragen, die bei LOB-Anwendungen zu erstellen. Eine der wichtigsten ist Identitätsmanagement (siehe Abbildung 1). Wir reden nicht nur über die Benutzeridentität, sondern auch Gerät Identität. Diese beiden Faktoren kombiniert wird häufig zusammengesetzte Identität bezeichnet. Dies ist sinnvoll, denn LOB-Anwendungen in der Regel Zugriff auf vertrauliche Unternehmensressourcen haben.

Überblick über iOS Line-of-Business-Anwendungen
Abbildung 1 Überblick über iOS Line-of-Business-Anwendungen

Geräteverwaltung

Eins ist klar über zentralisierte IT: Es muss irgendeine Art von Kontrolle über persönliche Geräte erzwingen. In einer idealen Welt, es kann zwingen Benutzer vollständig Domäne anschließen ihrer Geräte. Eine weniger-Extreme-Version des Steuerelements wird als Arbeitsplatz-Verknüpfung bezeichnet, die als eine entspannte Version eines Geräts voll-Domäne betrachtet werden kann.

Jeder IT-Administrator Ziel sollte sein, um sichere, verschlüsselte Kommunikation zwischen Unternehmensressourcen und das Gerät selbst zu gewährleisten. Installieren von Zertifikaten Gerät als Bestandteil der Bereitstellungsprozess ist eine Möglichkeit für eine Corporation zu sicher und das Gerät sicher zu handhaben.

Bereitstellung am Arbeitsplatz

Das erste Ziel der dieses Bereitstellungsprozesses soll ein Benutzer bei einem vertrauenswürdigen Verzeichnisdienst authentifiziert. Erfolgreiche Gerät Bereitstellung (oder Registrierung) führt in einem JSON-basierte Token auf dem Gerät. Dieses Token sorgt für sichere Kommunikation zwischen Benutzer und dem Firmennetzwerk (siehe Abbildung 2).

Bereitstellung am Arbeitsplatz hilft Benutzer authentifizieren
Abbildung 2 Bereitstellung am Arbeitsplatz hilft Benutzer authentifizieren

Mehrschichtige Identität

Nachdenken über ein Spektrum von Sicherheitsstufen sinnvoll ist (siehe Abbildung 3). Einige Unternehmensinformation ist einfach mehr vertraulich. Zusätzliche Maßnahmen sind oft erforderlich, um diese extra sensiblen Daten zu schützen.

das Spektrum der Sicherheitsstufen
Abbildung 3 das Spektrum der Sicherheitsstufen

Die meisten von uns sind bereits vertraut mit Benutzer-Authentifizierung. Auf die grundlegendsten Ebene der Sicherheit meldet sich ein Benutzer mit seinem Benutzernamen und Passwort. Die zweite Ebene ist die Geräteauthentifizierung, möglicherweise einen Ansatz eine Multifaktor-Authentifizierung erzwingen. Durch die Kombination, die Identität des Benutzers und der Identität des Geräts (z. B. über eine SMS-Herausforderung), können Sie dann eine zusammengesetzte Identität bilden.

Network Location Awareness

Ein weiteres wichtiges Anliegen bei der Ausführung von Anwendungen auf persönlichen Geräten ist Bewusstsein NLA (Network Location). Dies bedeutet, wenn eine Anforderung für eine geschützte Netzwerkressource hereinkommt, Sie können bestimmen, ob diese Anforderung von außerhalb des Firmennetzwerks stammt. NLA bietet zusätzlichen Schutz, da es hilft zusätzliche Regeln, wie eine Multifaktor-Authentifizierung für generierte außerhalb des Firmennetzwerks Anfragen zu erzwingen.

Speicherort im Netzwerk implementieren bedeutet Transparenz in der Regel, dass Sie eine Art des Webdienst-Proxy in einer DMZ erstellen. Eine DMZ ist ein Netzwerk, das eine Organisation außen gerichteten Dienstleistungen mit einem größeren und nicht vertrauenswürdigen Netzwerk wie dem Internet verfügbar macht. Sie können diese Proxys Zusatzreglement auslösen und private Ressourcen in einem Netzwerk vor externen Zugriffen zu schützen. Microsoft hat spezifische Technologien, die diese Szenarien zu ermöglichen. Erfahren Sie mehr darüber auf bit.ly/1v50JPq.

Identität mit Native iOS Code zu unterstützen

Wir werden zeigen, einige Low-Level-Techniken um native iOS-Funktionen nutzen. Vor dem Tauchen in das, werden wir jedoch einige Inhalte rund um Azure-Mobile-Dienste bereitstellen. Himmelblau Mobile Services bietet verschiedene häufig benötigten Funktionen auf Clientprogramme. Client-Programme können native iOS, Android, Windows Phone, Browser -­-basierte HTML/JavaScript oder Windows.

Jeder Clientplattform, die eine REST-API aufrufen können, kann Azure Mobile Services nutzen. Es bietet unterschiedliche Ebenen der Bibliotheksunterstützung über die unterstützten Clients. Leistungsspektrum gehören Identitätsverbund, Zugang zu den Speicheranlagen, offline-Daten-Sync und Push-Benachrichtigungen. Einige Funktionen sind in der Back-End, andere im front-End implementiert. Und Sie können entweder die Microsoft .NET Framework oder Node.js als Back-End.

Eine der schwierigeren Funktionen zu implementieren ist ein Sicherheitstoken auf einem iOS-Gerät speichern. Das Token wird zunächst von Azure Mobile Services bereitgestellt. Das Betriebssystem muss das Token zu schützen, und es muss verschlüsselt werden. Zum Glück bietet der Schlüsselbund-Mechanismus, die in das iOS SDK integriert diese Fähigkeit. Sie können sicher ein Token auf eines Mitarbeiters Gerät zu speichern. Dies ist eine rein native Ansatz, was bedeutet, dass der Code ist nicht wirklich wiederverwendbare.

Es gibt Vorteile für ein Sicherheitstoken lokal auf dem Gerät speichern. Das wichtigste ist, dass es Benutzer die Anwendung zugreifen, ohne jedes Mal einloggen können. Himmelblau Mobile Services-Anwendungen möglicherweise einige oder alle der mehreren Security token Provider oder Identitätsprovider, z. B. Active Directory, Active Directory Azure, Facebook, Twitter und andere nutzen.  Jeder bietet Standardauthentifizierung, aber sie sind auf andere Weise einzigartig.

Eine Möglichkeit, die sie anders sind ist die Fähigkeit Token abläuft. Active Directory und Active Directory Azure ermöglichen dies, aber Twitter nicht. Diese Fähigkeit ein Token abläuft ist wichtig für die Authentifizierung, die gewährt Zugriff auf Unternehmensressourcen, damit Active Directory und Active Directory Azure letztlich bessere Entscheidungen für diese Zugriffsebene als Twitter sind.

Im Geiste der "Start einfach" Wir beschreiben den Prozess mithilfe der Twitter-Authentifizierung in diesem Artikel, dann Azure Active Directory in einem zukünftigen Artikel zu decken. Xcode ist die IDE iOS Anwendungen entwickelt. Es ist etwas analog zu Visual Studio, aber weniger anspruchsvoll und fähig. Die traditionelle Sprache Code iOS Anwendungen ist Objective-C.

Um diese Techniken zu veranschaulichen, beginnen Sie mit dem Tutorial auf bit.ly/1vcxHMQ. Fügen Sie Verbundauthentifizierung, die Nutzung von Twitter Identity Provider-Diensten. Das Tutorial umfasst sowohl Back-End- und Front-End-Module. Sie können entweder Back-End (.NET oder JavaScript) auswählen, wie Sie entlang folgen. Nehmen Sie die Objective-C-Bahn für die front-End. Wir werden einige Code aus einem anderen Beispielprojekt (iOS-LensRocket) auf GitHub zur Unterstützung der Schlüsselbund-Funktion leihen.

Nicht viele Änderungen waren nötig für das Front-End-Xcode Projekt von Azure Mobile Services bereitgestellt. Alles, was wir tun müssen, ist die Schlüsselbund-Code und Sicherheit-Features aus der security.framework-Bibliothek hinzufügen. Wenn ein Benutzer die Anwendung startet, ist grundlegende token Management-Logik angewendet. Die Anwendung startet durch die Suche nach einem Token durch einen Anruf in die Schlüsselbund-API. Wenn das Token vorhanden ist, hat er abgerufen verwendet und. Der Benutzer wird nicht aufgefordert, erneut zu Twitter einloggen.

Hier ist eine Zusammenfassung der Änderungen am Code, die wir in der Xcode-IDE machen werde:

  • Link zu einer zusätzlichen Bibliothek (finden Sie weitere Hinweise auf bit.ly/1x7Ajzz)
  • Fügen Sie ein paar Dateien von iOS-LensRocket KeyChain-Funktionen zu unterstützen
  • Den Controller-Code ändern

Abbildung 4 veranschaulicht, wie verwenden wir Azure Mobile Services und native iOS code zum Zugriff auf eine SQL-Datenbank mit einem Token zwischengespeichert auf dem Gerät zu steuern.

hochrangigen Schritte zum Speichern von Authentifizierungstokens auf einem iOS Gerät
Abbildung 4 hochrangigen Schritte zum Speichern von Authentifizierungstokens auf einem iOS Gerät

Das Tutorial erhalten Sie bis zu dem Punkt der Ausführung einer native iOS-Anwendung, die lesen und schreiben mit einer SQL-Datenbank in der Cloud gehostet. Haben Sie ein funktionsfähiges Xcode Projekt geschrieben in Objective-C. Jedoch fehlt es Authentifizierung – wir erklären, dass später. Die vorhandene Implementierung verwendet eine Anwendungstaste von Azure Mobile Services bereitgestellt:

// Initialize the Mobile Services client with your URL and key.
MSClient *client =
  [MSClient clientWithApplicationURLString:@"https://msdnmagazine.azure-mobile.net/"
applicationKey:@"cctyYudYfxuczeRDMPcDBRCxDrOUIM73"];

Die Sorge für diesen Ansatz ist offensichtlich. Immer wenn Sie Geheimnisse in den Anwendungscode einbetten möchten, setzen Sie sich auf Sicherheitsrisiken. Was wir wirklich wollen ist die Kraft, des Benutzers sich anmelden um Datenbankaktualisierungen durchzuführen. Allerdings wollen wir nicht den Benutzer müssen sich ständig, einloggen, so wir das Authentifizierungstoken auf dem Gerät lokal zu speichern möchten. Wir konfigurieren die iOS-app, um das Token abzurufen, wenn die Anwendung gestartet wird.

Die meisten Unternehmensszenarien wird nicht sozial basierte Identitätsprovider, z. B. Facebook oder Twitter zu umarmen. Dennoch ist es eine nützliche Ort starten, da wir die Kern-Konzepte für die Nutzung der lokalen Identitäten mit Active Directory später nachweisen kann. Auch viele Business-Anwendungen nutzen, relationale Datenbanken und Azure Mobile Services bietet vorgefertigte Funktionen, um sie zu unterstützen.

Um Dinge begonnen zu erhalten, müssen Sie einige grundlegenden Aufgaben an die Azure Management Portal und dem dritten Identitätsprovider (die in diesem Fall Twitter) zu tun. Anwendungsmetadaten in die Twitter-Portal und die zugehörige Anwendungsmetadaten in der Azure-Mobil-Service-Portal zu erstellen. Dann erhalten Sie eine Anwendungs-URL. Kopieren Sie den Anwendungs-URL auf Twitter, und kopieren Sie die Twitter-API-Schlüssel in Azure Mobile Services. Dies ist, wie Sie zu einer Azure Mobile Services-Anwendung Identitätsprovider binden (siehe Abbildung 5).

das Verhältnis zwischen himmelblau Mobile Dienste und Twitter
Abbildung 5 das Verhältnis zwischen himmelblau Mobile Dienste und Twitter

Dies umfasst im Wesentlichen die Metadaten mobile Anwendung im Portal folgendermaßen anlegen:

  1. Get URL für mobile app von Azure Management Portal erstellten
  2. Melden Sie sich und gehen Sie zu dev.twitter.com/apps/new
  3. Erstellen Sie eine neue Twitter-app
  4. Nutzen Sie die API-Schlüssel und API-Geheimnis für Ihre Twitter-app
  5. Zurück zu Azure Management Portal
  6. Fügen Sie in API-Schlüssel und API-Geheimnis von Twitter

Portal Arbeit

Wie bereits erwähnt, gibt es ein paar Ansätze zum Aufbau Ihrer Back-End.  Wenn Sie das .NET Framework auswählen, haben großartige Kontrolle in Web-API über Verwendung RS Autorisierung für alle Benutzer Sie ob sie oder nicht authentifiziert sind. Bei Auswahl von Node.js bietet das Portal deklarative und geskriptet Ansätze.

Was wir wirklich tun müssen, ist zurück in die Xcode IDE läuft auf dem Mac. Wir verwenden es zu bearbeiten und Kompilieren des Quellcodes die LOB-iOS-app, die auf dem mobilen Gerät ausgeführt wird.

Wir machen die folgenden Codeänderungen in der Xcode-IDE:

  • Hinzufügen eines Bibliothek-Verweises auf security.framework.
  • Kopieren Sie diese vier Dateien von iOS-LensRocket bei bit.ly/1pqvQ25:
    • KeyChainWrapper.h
    • KeyChainWrapper.m
    • LensRocketConstants.h
    • LensRocketConstants.m

Es gibt drei wichtige Funktionen/Methoden beteiligt. Die erste ist Spiele, wo wir einen Aufruf von LoadAuthInfo hinzugefügt. Dies lädt in den Speicher ein zuvor gespeicherte Token aus einer bereits erfolgreichen Anmeldung. Hier ist, wo wir das Token Laden von der Festplatte anstatt zwingen den Benutzer wieder anmelden müssen (siehe Abbildung 6).

Abbildung 6 Änderungen vorgenommen, um Native iOS Code

#import "KeychainWrapper.h"  // Add this line.
- (void)viewDidLoad
{
  // Code omitted for brevity.
  [self loadAuthInfo];  // Add this line.
}
// Code omitted for brevity.
////////////////////////////////////////////////////////////////////////////////
//   Added viewDidAppear(), loadAuthInfo() below.
////////////////////////////////////////////////////////////////////////////////
// ----------------------------------------------------------------------------
// Event is viewDidAppear. When app becomes active, check credentials.
//
- (void)viewDidAppear:(BOOL)animated
{
  ////////////////////////////////////////////////////////////////////////////
  //  Check if current user is logged in. If not, log in to Twitter.
  MSClient *client = self.todoService.client;
  if(client.currentUser != nil)   {
    return;
  }
  [client loginWithProvider:@"twitter" controller:self animated:YES
    completion:^(MSUser *user, NSError *error) {
    [self saveAuthInfo];
    [self refresh];
  }];
}
// ----------------------------------------------------------------------------
// Save token locally.
// Leverage built-in iOS features called Keychain for user ID and tokenl storage
//
- (void) saveAuthInfo{
  // Save the userId
  [KeychainWrapper createKeychainValue:self.todoService.client.currentUser.userId
    forIdentifier:@"userid"];
  // Save the token itself
  [KeychainWrapper
    createKeychainValue:self.todoService.client.currentUser.
      mobileServiceAuthenticationToken
  forIdentifier:@"token"];
}
// ----------------------------------------------------------------------------
// Load the user ID and Token from the keychain. Avoid forcing user to log in again.
//
- (void)loadAuthInfo {
  NSString *userid =
    [KeychainWrapper keychainStringFromMatchingIdentifier:@"userid"];
  if (userid) {
    // Fetch the user ID and token from the Keychain.
    NSLog(@"userid: %@", userid);
    self.todoService.client.currentUser = [[MSUser alloc] initWithUserId:userid];
    self.todoService.client.currentUser.mobileServiceAuthenticationToken =
      [KeychainWrapper keychainStringFromMatchingIdentifier:@"token"];
  }
}

Wir haben auch die ViewDidAppear-Funktion, die aufgerufen wird, wenn die Anwendung wird sichtbar "oder" aktiv. Wir verwenden das MSClient-Objekt um zu überprüfen, um festzustellen, ob der Benutzer angemeldet ist. Wenn der Benutzer ist nicht eingeloggt haben, wir zwingen eine Twitter-Anmeldung und speichern Sie dann die Anmeldeinformationen (Token) auf die Festplatte mit den Schlüsselbund-Fähigkeiten. Dies würde mehr ordnungsgemäß Spiele umgesetzt werden.

Die Methoden SaveAuthInfo und LoadAuthInfo verwenden Sie einfach den Schlüsselbund-Code speichern und laden das Token zu und von der Festplatte auf dem mobilen Gerät. Erfahren Sie mehr über Keychain Services bei bit.ly/1qqcNFm.

Sie können ein zweites Tutorial folgen, über die Durchführung der Authentifizierung am bit.ly/1B3Av0k. Du würdest ein ähnliches Verfahren erlauben für die Föderation zu Azure Active Directory, im Gegensatz zu Twitter folgen:

  1. Get URL für mobile app, die Sie aus dem Azure Management Portal erstellt
  2. Gehen Sie zu Ihrer Active Directory-Seiten (auch im Azure Management Portal)
  3. Erstellen einer neuen Anwendung
  4. Nutzen Sie die Client-ID und Schlüssel
  5. Zurück zu mobile app Seite im Azure Management Portal
  6. Fügen Sie in der Client-ID und Key aus Active Directory

Wir gehen ins Detail um die Föderation zu lokalen Active Directory und Active Directory der Azure in die Cloud in einem späteren Artikel. In der Zwischenzeit kann man einige große Code-Beispiele auf bit.ly/1slQMz2 und bit.ly/1mK1LQF.

Zusammenfassung

Der Druck zur persönlichen Geräte am Arbeitsplatz unterstützen weiterhin zunimmt, ist es wichtig für Entwickler, um besser zu verstehen, wie diese Geräte zu sichern und arbeiten mit Token. Umsetzung eines Konzepts Benutzername/Kennwort-Authentifizierung ist oft nicht ausreichend für wirklich vertrauliche Daten.

Um alle Sicherheitsfunktionen auf einem Gerät nutzen zu können, müssen oft Sie auf systemeigene Funktionen zugreifen, wie mit iOS Keychain Services zu sehen. Im nächsten Artikel werden wir weiterhin, um die Herausforderungen, vor denen es Führer um mobile Geräte im Unternehmen konzentriert sich auf Identität, Datensynchronisation und Push-Benachrichtigungen zu erkunden.

Bruno Terkaly ist ein Developer Evangelist für Microsoft. Seine fundierten Kenntnisse basieren auf mehreren Jahren Erfahrung in der Programmierung in unterschiedlichsten Plattformen, Sprachen, Frameworks, SDKs, Bibliotheken und APIs. Er verbringt Zeit Schreiben von Code, Blogging und geben live-Präsentationen auf den Aufbau von Cloud-basierten Anwendungen, speziell mit Microsoft Azure-Plattform. Sie können lesen Sie seinen Blog unter blogs.msdn.com/b/brunoterkaly.

Greg Oliver trat die Microsoft Azure ISV-Organisation im Jahr 2010. Er verbringt die meiste seiner Zeit hilft Unternehmen mit ihren Migrationspläne und Implementierungen. Vor kurzem ist er mit einem populären Verbraucher Spiele Unternehmen mit ihrer Wanderung von einem konkurrierenden Cloud-Anbieter tätig. Bevor er zu Microsoft kam, war er ein Technologie-Partner in einem Startup-Unternehmen.

Unser Dank gilt dem folgenden technischen Experten von Microsoft für die Durchsicht dieses Artikels: Matthew Henderson


Bruno Terkaly arbeitet als Entwicklungsexperte für Microsoft. Seine fundierten Kenntnisse basieren auf mehreren Jahren Erfahrung in der Programmierung in unterschiedlichsten Plattformen, Sprachen, Frameworks, SDKs, Bibliotheken und APIs. Er verbringt Zeit Schreiben von Code, Blogging und geben live-Präsentationen auf den Aufbau von Cloud-basierten Anwendungen, speziell mit Microsoft Azure-Plattform. Lesen Sie seinen Blog unter blogs.msdn.com/b/brunoterkaly.

Greg Oliver trat die Microsoft Azure ISV-Organisation im Jahr 2010. Er verbringt die meiste seiner Zeit hilft Unternehmen mit ihren Migrationspläne und Implementierungen. Vor kurzem ist er mit einem populären Verbraucher Spiele Unternehmen mit ihrer Wanderung von einem konkurrierenden Cloud-Anbieter tätig. Bevor er zu Microsoft kam, war er ein Technologie-Partner in einem Startup-Unternehmen.

Unser Dank gilt dem folgenden technischen Experten von Microsoft für die Durchsicht dieses Artikels: Matthew Henderson