Erkunden von Sicherheit und Authentifizierung
Lernziele
Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
- Benennen der in Salesforce-Anwendungen verwendeten Sicherheits- und Authentifizierungsmethoden
- Beschreiben der Verwendung externer Client-Anwendungen zur Integration mobiler Anwendungen mit dem Salesforce-Server.
- Erläutern der grundlegenden OAuth-Terminologie.
- Beschreiben des Ablaufs der OAuth-Authentifizierung und der PIN-Sicherheit.
Schützen und Authentifizieren Ihrer mobilen Anwendung mit OAuth 2.0
Für Unternehmensanwendungen, die auf mobilen Geräten ausgeführt werden, ist eine sichere Authentifizierung unabdingbar. Das Branchenstandardprotokoll OAuth 2.0 ermöglicht eine sichere Authentifizierung für den Zugriff auf die Daten eines Verbrauchers, ohne dass Benutzername und Kennwort des Benutzers herausgegeben werden. Es wird oftmals als Werkstattschlüssel für den Softwarezugriff beschrieben. Ein Werkstattschlüssel bietet nur Zugriff auf bestimmte Funktionen Ihres Autos. Der Kofferraum oder das Handschuhfach lassen sich beispielsweise mit einem solchen Schlüssel nicht öffnen.
Entwickler von mobilen Anwendungen können die OAuth 2.0-Implementierung von Salesforce schnell und einfach einbetten. Die Implementierung verwendet eine HTML-Ansicht, um Benutzername und Kennwort zu erfassen, die danach an den Server gesendet werden. Der Server gibt ein Sitzungstoken und ein persistentes Aktualisierungstoken zurück, die für weitere Aktionen im Gerät gespeichert werden.
Eine externe Salesforce-Client-App ist das wichtigste Mittel, über das eine mobile Anwendung eine Verbindung zu Salesforce herstellt. Eine externe Clientanwendung ermöglicht es sowohl dem Entwickler als auch dem Administrator, zu steuern, wie die Anwendung eine Verbindung herstellt und wer Zugriff auf sie hat. Beispielsweise kann eine externe Clientanwendung den Zugriff auf eine bestimmte Gruppe von Kunden beschränken, einen IP-Bereich festlegen oder dessen Einschränkungen lockern und so weiter.
Vertraut werden mit OAuth-Terminologie
Wenn Ihren Orientierung fehlt, können Sie mit dieser Liste wieder in die Spur finden. Diese Bezeichnungen führen, wenn man sie im Zusammenhang betrachtet, direkt zum Erfolg mit OAuth.
Verbraucherschlüssel |
Ein Wert, der vom Verbraucher (in diesem Fall von der Mobile SDK-Anwendung) für die Identifikation der Anwendung bei Salesforce verwendet wird. Wird als |
Zugriffstoken |
Ein vom Verbraucher verwendeter Wert, mit dem im Namen des Benutzers Zugriff auf geschützte Ressourcen erlangt werden kann, ohne dass die Salesforce-Anmeldeinformationen des Benutzers verwendet werden müssen. Das Zugriffstoken ist eine Sitzungs-ID und kann direkt verwendet werden. |
Aktualisierungstoken |
Ein Token, das vom Verbraucher verwendet wird, um ein neues Zugriffstoken abzurufen, ohne dass der Endbenutzer den Zugriff erneut genehmigen muss. |
Autorisierungscode |
Ein kurzlebiges Token, das den durch den Endbenutzer gewährten Zugriff darstellt. Der Autorisierungscode dient zum Abrufen eines Zugriffstokens und eines Aktualisierungstokens. |
Externe Clientanwendung |
Eine Anwendung außerhalb von Salesforce, bei der das OAuth-Protokoll verwendet wird, um sowohl den Salesforce-Benutzer als auch die externe Anwendung zu verifizieren. |
OAuth2-Authentifizierungs-Flow
Der Flow der Ereignisse bei der OAuth-Autorisierung hängt vom Status der Authentifizierung auf dem Gerät ab.
Ablauf der erstmaligen Autorisierung
- Der Kunde öffnet eine Mobile SDK-Anwendung.
- Eine Authentifizierungsaufforderung wird angezeigt.
- Der Kunde gibt Benutzername und Kennwort ein.
- Die Anwendung übermittelt die Anmeldedaten des Kunden an Salesforce und erhält als Bestätigung für die erfolgreiche Authentifizierung eine Sitzungs-ID.
- Der Kunde genehmigt die Anforderung der Anwendung, um Zugriff auf die Anwendung zu gewähren.
- Die Anwendung wird gestartet.
Laufende Autorisierung
- Der Kunde öffnet eine mobile Anwendung.
- Die Anwendung wird sofort gestartet, wenn die Sitzungs-ID aktiv ist. Die Anwendung verwendet das Aktualisierungstoken der ersten Autorisierung, um eine aktualisierte Sitzungs-ID zu erhalten, wenn die Sitzungs-ID veraltet ist.
- Die Anwendung wird gestartet.
Anwendungssperren-Sicherheit
Als optionale Sicherheitsfunktion können externe Clientanwendungen so konfiguriert werden, dass sie sich sperren, nachdem sie eine bestimmte Zeit lang im Hintergrund gelaufen sind. Zum Entsperren der Anwendung wird der Benutzer aufgefordert, die vom Betriebssystem vorgesehene biometrische oder kryptografische Sicherheitsabfrage einzugeben – beispielsweise eine PIN oder einen Passcode.
Zum Nutzen des Schutzes durch die Anwendungssperre muss der Entwickler beim Erstellen der externen Clientanwendung das Kontrollkästchen "Screen Lock" (Bildschirmsperre) aktivieren. Administratoren der mobilen Anwendung erhalten dann die Option, die Dauer des Zeitlimits anzupassen.
OAuth2-Webserver-Flow
Aus Sicherheitsgründen empfiehlt Salesforce die Verwendung des Webserver-Flows, da dieser die PKCE-Funktion (Proof Key Code Exchange) unterstützt. Weitere Informationen finden Sie unter OAuth 2.0 Web Server Flow for Web App Integration (OAuth 2.0-Webserver-Flow für die Integration von Webanwendungen).
Flow für OAuth2-Benutzeragenten
Im Benutzeragenten-Flow erhält die externe Clientanwendung, die die Clientanwendung mit der Salesforce API verbindet, das Zugriffstoken als HTTP-Weiterleitung. Die externe Clientanwendung fordert den Autorisierungsserver auf, den Benutzeragenten auf einen Webserver oder eine zugängliche lokale Ressource umzuleiten.
Der Webserver kann das Zugriffstoken aus der Antwort extrahieren und an die externe Clientanwendung weiterleiten. Aus Sicherheitsgründen wird die Tokenantwort als Hash-Tag-Fragment (#) im URL bereitgestellt. Dieses Format verhindert, dass das Token an den Server sowie an andere Server in Verweis-Headern weitergeleitet wird.
Warnung
Da das Zugriffstoken im Umleitungs-URL codiert ist, kann es für den Benutzer und andere Anwendungen auf dem Gerät verfügbar gemacht werden.
Werte des Umfangsparameters
OAuth erfordert eine Konfiguration des Umfangs sowohl im Server als auch im Client. Die Vereinbarung zwischen beiden Seiten definiert den Vertrag für den Umfang.
-
Serverseitig: Definieren Sie Bereichsberechtigungen in einer externen Clientanwendung auf dem Salesforce-Server. Diese Einstellungen bestimmen, welche Zugriffsebenen Clientanwendungen, z. B. Mobile SDK-Anwendungen, anfordern können. Konfigurieren Sie zumindest die OAuth-Einstellungen Ihrer externen Clientanwendung so, dass sie mit den Angaben in Ihrem Code übereinstimmen. Bei den meisten Anwendungen genügen refresh_token, web und api. Eine vollständige Liste der Bereiche finden Sie unter OAuth Tokens and Scopes (OAuth-Token und Bereiche).
-
Clientseitig: Geben Sie Bereichsanforderungen in Ihrer Mobile SDK-Anwendung an. Anforderungen des Clientbereichs müssen eine Teilmenge der Bereichsberechtigungen der externen Clientanwendung darstellen. Im Mobile SDK 13.2 und höher führt das Fehlen von Bereichsangaben dazu, dass alle auf dem Server konfigurierten Bereiche erteilt werden.
Externe Client-Anwendungen
Externe Clientanwendungen sind paketierbare Frameworks, die es Anwendungen von Drittanbietern ermöglichen, sich mithilfe von APIs und Sicherheitsprotokollen in Salesforce zu integrieren. Darüber hinaus beinhalten sie strukturelle Verbesserungen, um separate Benutzerrollen beizubehalten und verwaltete Pakete der zweiten Generation zuzulassen. Salesforce empfiehlt, externe Clientanwendungen zu verwenden und bestehende lokal verbundene Anwendungen auf lokale externe Clientanwendungen zu migrieren.
Erstellen einer externen Clientanwendung
Das Erstellen externer Clientanwendungen ist ganz einfach, Sie benötigen dafür jedoch Administratorrechte. In Ihrer eigenen Developer Edition- oder Trailhead Playground-Organisation werden Ihnen diese Berechtigungen automatisch erteilt.
- Wechseln Sie in Ihrem Trailhead Playground oder Ihrer Developer Edition-Organisation zu Setup.
- Geben Sie im Setup im Feld der Schnellsuche
Apps(Anwendungen) an und wählen Sie dann External Client Apps Manager (Manager für externe Clientanwendungen) aus.
- Wählen Sie New External Client App (Neue externe Client-Anwendung) aus.
- Füllen Sie das Formular unter Basic Information (Grundlegende Informationen) wie folgt aus.
- Name der externen Clientanwendung:
Trailhead Intro
- API-Name: Übernehmen Sie den vorgeschlagenen Wert..
- Contact Email (Kontakt-E-Mail): Geben Sie Ihre E-Mail-Adresse ein.
- Distribution State (Verteilungsstatus): Wählen Sie zum Entwickeln einer externen Clientanwendung für Ihre lokale Organisation Local (Lokal) aus. Um eine externe Client-Anwendung für die Paketerstellung und Verteilung zu entwickeln, legen Sie "Distribution State" (Verteilungsstatus) auf Packaged (Im Paket) fest.
- Aktivieren Sie unter "API (Enable OAuth Settings)" (API (OAuth-Einstellungen aktivieren)) Enable OAuth (OAuth aktivieren).
- Legen Sie den Rückruf-URL auf eine beliebige URL fest – egal ob echt oder fiktiv –, zum Beispiel
mysampleapp://auth/success. Falls ein automatischer Vorschlag für den Rückruf-URL angegeben wird, akzeptieren Sie diesen nicht. Fügen Sie vielmehr den Rückruf-URL ein.
- Treffen Sie unter "Available OAuth Scopes" (Verfügbare OAuth-Bereiche) folgende Auswahlen:
-
Verwalten von Benutzerdaten über APIs (api)
-
Verwalten von Benutzerdaten über Webbrowser (web)
-
Durchführen von Anforderungen zu einem beliebigen Zeitpunkt (refresh_token, offline_access)
-
Verwalten von Benutzerdaten über APIs (api)
- Klicken Sie auf den Add Arrow (Pfeil 'Hinzufügen'), um jede Auswahl in "Selected OAuth Scopes" (Ausgewählte OAuth-Umfänge) zu verschieben. Dieser minimale Umfangbereich funktioniert bei den meisten Mobile SDK-Anwendungen gut.
- Unter Security (Sicherheit):
- Aktivieren Sie das Kontrollkästchen Require Secret for Web Server Flow (Geheimnis für Webserver-Flow erforderlich).
- Deaktivieren Sie Require Secret for Refresh Token Flow (Geheimnis für Aktualisierungstoken-Flow vorschreiben).
- (Empfohlen) Aktivieren Sie Issue JSON Web Token (JWT)-based access tokens for named users (JSON Web Token (JWT)-basierte Zugriffstoken für benannte Benutzer ausgeben).
- Aktivieren Sie das Kontrollkästchen Require Secret for Web Server Flow (Geheimnis für Webserver-Flow erforderlich).
- Klicken Sie auf Create (Erstellen).
Nachdem Sie sich ein wenig mit der Architektur und Sicherheit von Mobile SDK vertraut gemacht haben, ist es Zeit, praktisch mit dem Mobile SDK zu üben. Sie können beginnen, indem Sie sich der folgenden Aufgabe stellen, für die nur eine Developer Edition- oder Trailhead Playground-Organisation erforderlich ist. Wir empfehlen Ihnen, anschließend den Badge Set Up Your Mobile SDK Developer Tools (Einrichten Ihrer Mobile SDK-Entwicklungstools) zu absolvieren.
