(Legacy) Amazon FireOS-Integrations-Cookbook amazon-fireos-integration-cookbook
Einführung intro
In diesem Dokument werden die Berechtigungs-Workflows beschrieben, die ein Programm eines Programmierers auf höherer Ebene über die APIs implementieren kann, die von der Amazon FireOS-AccessEnabler
bereitgestellt werden.
Die Lösung für die Berechtigung zur Adobe Pass-Authentifizierung für Amazon FireOS ist letztendlich in zwei Domains unterteilt:
-
Die Domain der Benutzeroberfläche : Dies ist die Anwendungsebene der oberen Ebene, die die Benutzeroberfläche implementiert und die von der
AccessEnabler
-Bibliothek bereitgestellten Services verwendet, um Zugriff auf eingeschränkte Inhalte zu gewähren. -
Die
AccessEnabler
Domain - hier werden die Berechtigungs-Workflows in der Form von implementiert:- Netzwerkaufrufe an Adobe-Backend-Server
- Geschäftslogikregeln in Bezug auf die Authentifizierungs- und Autorisierungs-Workflows
- Verwaltung verschiedener Ressourcen und Verarbeitung des Workflow-Status (z. B. des Token-Cache)
Das Ziel der AccessEnabler
-Domain besteht darin, alle Komplexitäten der Berechtigungs-Workflows zu verbergen und der Anwendung der oberen Ebene (über die AccessEnabler
-Bibliothek) eine Reihe einfacher Berechtigungsprimitive bereitzustellen. Dieser Prozess ermöglicht die Implementierung der Berechtigungs-Workflows:
- Legen Sie die Anfordereridentität fest.
- Authentifizierung mit einem bestimmten Identitätsanbieter überprüfen und abrufen.
- Überprüfen Sie und rufen Sie die Autorisierung für eine bestimmte Ressource ab.
- Abmelden.
Die Netzwerkaktivität des AccessEnabler
erfolgt in einem anderen Thread, sodass der UI-Thread nie blockiert wird. Daher muss der bidirektionale Kommunikationskanal zwischen den beiden Anwendungsdomänen einem vollständig asynchronen Muster folgen:
- Die Anwendungsebene der Benutzeroberfläche sendet Nachrichten über die API-Aufrufe, die von der
AccessEnabler
-Bibliothek bereitgestellt werden, an dieAccessEnabler
-Domain. - Der
AccessEnabler
antwortet auf die Benutzeroberflächenebene über die imAccessEnabler
-Protokoll enthaltenen Rückrufmethoden, die die Benutzeroberflächenebene bei derAccessEnabler
-Bibliothek registriert.
Berechtigungsflüsse entitlement
A. Voraussetzungen prereqs
-
Erstellen Sie Ihre Callback-Funktionen:
-
- Wird durch
setRequestor()
ausgelöst und gibt „Erfolg“ oder „Fehler“ zurück. Der Erfolg zeigt an, dass Sie mit Berechtigungsaufrufen fortfahren können.
- Wird durch
-
- Wird nur von
getAuthentication()
ausgelöst, wenn der Benutzer keinen Provider (MVPD) ausgewählt hat und noch nicht authentifiziert ist. Dermvpds
Parameter ist ein Array von Anbietern, die den Benutzenden zur Verfügung stehen.
- Wird nur von
-
setAuthenticationStatus(status, reason)
-
Wird jedes Mal von
checkAuthentication()
ausgelöst. Wird nur vongetAuthentication()
ausgelöst, wenn der Benutzer bereits authentifiziert ist und einen Anbieter ausgewählt hat. -
Der zurückgegebene Status ist authentifiziert oder nicht authentifiziert. Der Grund dafür ist ein Authentifizierungsfehler oder eine Abmeldeaktion.
-
-
- Wird in AmazonFireOS SDK ignoriert, wird die Methode auf Android-Plattformen verwendet, wo sie durch
getAuthentication()
ausgelöst wird, nachdem der Benutzer eine MVPD ausgewählt hat. Derurl
gibt den Speicherort der Anmeldeseite von MVPD an.
- Wird in AmazonFireOS SDK ignoriert, wird die Methode auf Android-Plattformen verwendet, wo sie durch
-
- Ausgelöst durch
checkAuthentication(), getAuthentication(), checkAuthorization(), getAuthorization(), setSelectedProvider()
.
Derevent
Parameter gibt an, welches Berechtigungsereignis aufgetreten ist. Derdata
Parameter ist eine Liste von Werten, die sich auf das Ereignis beziehen.
- Ausgelöst durch
-
- Wird durch
checkAuthorization()
undgetAuthorization()
nach erfolgreicher Autorisierung zum Anzeigen einer Ressource ausgelöst. - Der
token
ist das kurzlebige Medien-Token. Derresource
ist der Inhalt, den der Benutzer anzeigen darf.
- Wird durch
-
tokenRequestFailed(resource, code, description)
- Wird durch
checkAuthorization()
undgetAuthorization()
nach erfolgloser Autorisierung ausgelöst. - Der
resource
ist der Inhalt, den die Benutzerin oder der Benutzer versucht hat anzuzeigen. Dercode
ist der Fehlercode, der angibt, welche Art von Fehler aufgetreten ist. Derdescription
Parameter beschreibt den Fehler, der mit dem Fehlercode verbunden ist.
- Wird durch
-
- Ausgelöst durch
getSelectedProvider()
. - Der Parameter
mvpd
enthält Informationen zum vom Benutzer ausgewählten Anbieter.
- Ausgelöst durch
-
setMetadataStatus(metadata, key, arguments)
- Ausgelöst durch
getMetadata().
- Der
metadata
-Parameter liefert die angeforderten spezifischen Daten, derkey
-Parameter ist der in dergetMetadata()
-Anfrage verwendete Schlüssel und derarguments
ist dasselbe Wörterbuch, das angetMetadata()
übergeben wurde.
- Ausgelöst durch
-
preauthorizedResources(resources)
- Ausgelöst durch
checkPreauthorizedResources()
. - Der
authorizedResources
Parameter stellt die Ressourcen dar, die der Benutzer anzeigen darf.
- Ausgelöst durch
-
B. Anlauffluss startup_flow
-
Starten Sie die Anwendung auf höherer Ebene.
-
Adobe Pass-Authentifizierung starten.
-
Rufen Sie
getInstance
auf, um eine einzelne Instanz des Adobe Pass-Authentifizierungs-AccessEnabler
zu erstellen.- Abhängigkeit: Adobe Pass Authentication Native Amazon FireOS Library (
AccessEnabler
)
- Abhängigkeit: Adobe Pass Authentication Native Amazon FireOS Library (
-
Aufruf
setRequestor()
, um die Kennung des Programmierers zu ermitteln; übergeben Sie dierequestorID
des Programmierers und (optional) ein Array von Adobe Pass-Authentifizierungsendpunkten.-
Abhängigkeit: Valid Adobe Pass Authentication RequestorID (Wenden Sie sich an Ihren Adobe Pass Authentication Account Manager, um dies zu arrangieren.)
-
Trigger: setRequestorComplete()-Rückruf
-
Berechtigungsanfragen können erst abgeschlossen werden, wenn die Identität des Antragstellers vollständig ermittelt wurde. Dies bedeutet effektiv, dass während der Ausführung von setRequestor() alle nachfolgenden Berechtigungsanfragen (z. B.
checkAuthentication()
) blockiert werden.Sie haben zwei Implementierungsoptionen: Sobald die Anfordereridentifizierungsinformationen an den Backend-Server gesendet wurden, kann die Benutzeroberflächen-Anwendungsebene einen der beiden folgenden Ansätze wählen:
- Warten Sie, bis der
setRequestorComplete()
-Rückruf ausgelöst wird (Teil desAccessEnabler
-Delegaten). Diese Option bietet die größte Sicherheit, dass abgeschlossensetRequestor()
. Daher wird sie für die meisten Implementierungen empfohlen. - Fahren Sie fort, ohne auf das Auslösen des
setRequestorComplete()
-Callbacks zu warten, und beginnen Sie mit der Ausgabe von Berechtigungsanfragen. Diese Aufrufe (checkAuthentication, checkAuthorization, getAuthentication, getAuthorization, checkPreauthorizedResource, getMetadata, logout) werden von derAccessEnabler
-Bibliothek in die Warteschlange gestellt, die die eigentlichen Netzwerkaufrufe nach demsetRequestor()
ausführt. Diese Option kann gelegentlich unterbrochen werden, wenn beispielsweise die Netzwerkverbindung instabil ist.
-
-
Rufen Sie checkAuthentication() auf, um auf eine vorhandene Authentifizierung zu prüfen, ohne den vollständigen Authentifizierungsfluss zu initiieren. Wenn dieser Aufruf erfolgreich ist, können Sie direkt mit dem Autorisierungsfluss fortfahren. Andernfalls fahren Sie mit dem Authentifizierungsfluss fort.
-
Abhängigkeit: Erfolgreicher Aufruf an
setRequestor()
(diese Abhängigkeit gilt auch für alle nachfolgenden Aufrufe). -
Trigger: setAuthenticationStatus()-Rückruf
C. Authentifizierungsfluss authn_flow
-
Rufen Sie
getAuthentication()
auf, um den Authentifizierungsfluss zu initiieren oder um eine Bestätigung zu erhalten, dass der Benutzer bereits authentifiziert ist.Trigger:
- Der Rückruf setAuthenticationStatus() , wenn der Benutzer bereits authentifiziert ist. Fahren Sie in diesem Fall direkt mit dem Autorisierungsfluss“.
- Der Rückruf displayProviderDialog() , wenn der Benutzer noch nicht authentifiziert ist.
-
Zeigen Sie dem Benutzer die Liste der an
displayProviderDialog()
gesendeten Anbieter. -
Nachdem der Benutzer einen Anbieter ausgewählt hat, öffnet WebView die Anbieterseite, auf der sich der Benutzer anmelden kann
note note NOTE An dieser Stelle hat der Benutzer die Möglichkeit, den Authentifizierungsfluss abzubrechen. In diesem Fall bereinigt der AccessEnabler
seinen internen Status und setzt den Authentifizierungsfluss zurück. -
Nach erfolgreicher Anmeldung durch den Benutzer wird die WebView geschlossen.
-
Rufen Sie
getAuthenticationToken(),
auf, um denAccessEnabler
anzuweisen, das Authentifizierungstoken vom Backend-Server abzurufen. -
[Optional] Rufen Sie
checkPreauthorizedResources(resources)
auf, um zu überprüfen, welche Ressourcen der Benutzer anzeigen darf. Derresources
ist ein Array geschützter Ressourcen, das mit dem Authentifizierungstoken des Benutzers verknüpft ist.Trigger:
preAuthorizedResources()
Callback
Ausführungspunkt: Nach Abschluss des Authentifizierungsflusses -
Wenn die Authentifizierung erfolgreich war, fahren Sie mit dem Autorisierungsfluss fort.
D. Autorisierungsfluss authz_flow
-
Rufen Sie
getAuthorization()
auf, um den Autorisierungsfluss zu initiieren.Abhängigkeit: Gültige ResourceID(s), die mit den MVPD vereinbart wurden.
Hinweis Die Ressourcen-IDs müssen mit den auf anderen Geräten oder Plattformen verwendeten IDs übereinstimmen und für alle MVPDs identisch sein.
-
Authentifizierung und Autorisierung überprüfen.
-
Wenn der
getAuthorization()
-Aufruf erfolgreich ist: Der Benutzer verfügt über gültige AuthN- und AuthZ-Token (der Benutzer ist authentifiziert und berechtigt, die angeforderten Medien zu sehen). -
Wenn
getAuthorization()
fehlschlägt: Untersuchen Sie die ausgelöste Ausnahme, um ihren Typ (AuthN, AuthZ oder etwas Anderes) zu bestimmen:- Wenn es sich um einen Authentifizierungsfehler (AuthN) handelte, starten Sie den Authentifizierungsfluss erneut.
- Wenn es sich um einen Autorisierungsfehler (AuthZ) handelte, ist der Benutzer nicht berechtigt, die angeforderten Medien anzusehen, und dem Benutzer sollte eine Fehlermeldung angezeigt werden.
- Wenn ein anderer Fehlertyp aufgetreten ist (Verbindungsfehler, Netzwerkfehler usw.), zeigen Sie dem Benutzer eine entsprechende Fehlermeldung an.
-
-
Validieren des Short Media Token.
Verwenden Sie die Media Token Verifier-Bibliothek der Adobe Pass-Authentifizierung, um das vom obigen
getAuthorization()
-Aufruf zurückgegebene kurzlebige Medien-Token zu überprüfen:- Wenn die Validierung erfolgreich ist: Geben Sie die angeforderten Medien für den Benutzer wieder.
- Wenn die Validierung fehlschlägt: Das AuthZ-Token war ungültig, sollte die Medienanfrage abgelehnt werden und dem Benutzer sollte eine Fehlermeldung angezeigt werden.
-
Kehren Sie zu Ihrem normalen Programmablauf zurück.
E. Anzeigen des Medienflusses media_flow
-
Der Benutzer wählt die anzuzeigenden Medien aus.
-
Sind die Medien geschützt? Ihre Anwendung prüft, ob das ausgewählte Medium geschützt ist:
- Wenn das ausgewählte Medium geschützt ist, startet Ihre Anwendung den Autorisierungsfluss oben.
- Wenn das ausgewählte Medium nicht geschützt ist, geben Sie das Medium für den Benutzer wieder.
F. Abmeldefluss logout_flow
-
Rufen Sie
logout()
auf, um den Benutzer abzumelden. DieAccessEnabler
löscht alle zwischengespeicherten Werte und Token, die Benutzende für die aktuelle MVPD erhalten haben, aus allen Anforderern, die die Anmeldung über Single Sign-On teilen. Nachdem der Cache gelöscht wurde, führt derAccessEnabler
einen Server-Aufruf durch, um die Server-seitigen Sitzungen zu bereinigen. Da der Server-Aufruf zu einer SAML-Umleitung an den IdP führen kann (dies ermöglicht die Sitzungsbereinigung auf der IdP-Seite), muss dieser Aufruf allen Umleitungen folgen. Aus diesem Grund wird dieser Aufruf innerhalb eines WebView-Steuerelements verarbeitet, das für den Benutzer unsichtbar ist.Hinweis: Der Abmeldefluss unterscheidet sich vom Authentifizierungsfluss insofern, als der Benutzer in keiner Weise mit der WebView interagieren muss. Daher ist es möglich (und empfohlen), das WebView-Steuerelement während des Abmeldevorgangs unsichtbar (d. h. ausgeblendet) zu machen.