(Legacy) iOS/tvOS SDK Cookbook iostvos-sdk-cookbook
Einführung intro
In diesem Dokument werden die Berechtigungs-Workflows beschrieben, die ein Programm der höheren Ebene eines Programmierers über die APIs implementieren kann, die von der iOS/tvOS AccessEnabler-Bibliothek bereitgestellt werden.
Die Adobe Pass-Lösung für die Berechtigung zur Authentifizierung für iOS/tvOS 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 Form von Folgendem 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 auszublenden und der Upper-Layer-Anwendung (über die AccessEnabler-Bibliothek) eine Reihe einfacher Berechtigungs-Primitive bereitzustellen, mit denen Sie die Berechtigungs-Workflows implementieren:
- Anfordereridentität festlegen
- Authentifizierung mit einem bestimmten Identitätsanbieter überprüfen und abrufen
- Überprüfen und Abrufen der Autorisierung für eine bestimmte Ressource
- Abmelden
- Apple SSO-Flüsse durch Proxy des Apple VSA-Frameworks
Die Netzwerkaktivität des AccessEnabler erfolgt in einem eigenen 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 verfügbar gemacht werden, an die AccessEnabler-Domain.
- Der AccessEnabler antwortet auf die Benutzeroberflächenebene über die im AccessEnabler-Protokoll enthaltenen Callback-Methoden, die die Benutzeroberflächenebene bei der AccessEnabler-Bibliothek registriert.
Konfigurieren des Experience Cloud-ID-Service (Besucher-ID) visitorIDSetup
Die Konfiguration des Experience Cloud-ID🔗-Werts ist aus Analytics Sicht wichtig. Nachdem ein visitorID
festgelegt wurde, sendet die SDK diese Informationen zusammen mit jedem Netzwerkaufruf, und der Adobe Pass-Authentifizierungsserver erfasst diese Informationen. Sie können die Analysen aus dem Adobe Pass-Authentifizierungs-Service mit allen anderen Analyseberichten korrelieren, die Sie möglicherweise von anderen Anwendungen oder Websites haben. Informationen zum Einrichten von visitorID finden Sie hier.
Berechtigungsflüsse entitlement
A. Voraussetzungen
B. Startfluss
C. Authentifizierungsfluss ohne Apple SSO
D. Authentifizierungsfluss mit Apple SSO auf iOS
E. Authentifizierungsfluss mit Apple SSO auf tvOS
F. AUTORISIERUNGSFLUSS
G. Medienfluss anzeigen
H. Abmeldefluss ohne Apple SSO
I. Abmeldefluss mit Apple SSO
A. Voraussetzungen prereqs
-
Erstellen Sie Ihre Callback-Funktionen:
-
setRequestorComplete()
-
Ausgelöst durch setRequestor(), gibt Erfolg oder Fehler zurück.
-
Der Erfolg zeigt an, dass Sie mit Berechtigungsaufrufen fortfahren können.
-
- Wird nur von
getAuthentication()
ausgelöst, wenn der Benutzer keinen Provider (MVPD) ausgewählt hat und noch nicht authentifiziert ist. - Der
mvpds
Parameter ist ein Array von Anbietern, die den Benutzenden zur Verfügung stehen.
- Wird nur von
-
setAuthenticationStatus(status, errorcode)
- Wird jedes Mal von
checkAuthentication()
ausgelöst. - Wird nur von
getAuthentication()
ausgelöst, wenn der Benutzer bereits authentifiziert ist und einen Anbieter ausgewählt hat. - Als Status wird Erfolg oder Fehler zurückgegeben. Der Fehler-Code beschreibt den Typ des Fehlers.
- Wird jedes Mal von
-
- Wird durch
getAuthentication()
ausgelöst, nachdem der Benutzer eine MVPD ausgewählt hat. Derurl
gibt den Speicherort der Anmeldeseite von MVPD an.
- Wird durch
-
sendTrackingData(event, data)
- Ausgelöst durch
checkAuthentication()
,getAuthentication()
,checkAuthorization()
,getAuthorization()
,setSelectedProvider()
. - Der
event
Parameter gibt an, welches Berechtigungsereignis aufgetreten ist. Derdata
Parameter ist eine Liste von Werten, die sich auf das Ereignis beziehen.
- Ausgelöst durch
-
setToken(token, resource)
- Wird durch checkAuthorization() und getAuthorization() nach erfolgreicher Autorisierung zum Anzeigen einer Ressource ausgelöst.
- Der
token
ist das kurzlebige Medien-Token. Derresource
ist der Inhalt, den die Benutzerin oder der Benutzer anzeigen darf.
-
tokenRequestFailed(resource, code, description)
- Wird von checkAuthorization() und getAuthorization() nach einer nicht erfolgreichen 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.
-
selectedProvider(mvpd)
- 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 Schlüssel, der in der Anfrage getMetadata() verwendet wird. Derarguments
Parameter ist dasselbe Wörterbuch, das an getMetadata() übergeben wurde.
- Ausgelöst durch
-
preauthorizedResources(authorizedResources)
-
Ausgelöst durch
checkPreauthorizedResources()
. -
Der
authorizedResources
Parameter stellt die Ressourcen dar, die der Benutzer verwendet
ist berechtigt, Folgendes anzuzeigen.
-
-
presentTvProviderDialog(viewController)
- Wird durch getAuthentication() ausgelöst, wenn der aktuelle Anforderer mindestens MVPD mit SSO-Unterstützung unterstützt.
- Der viewController-Parameter ist das Apple SSO-Dialogfeld und muss auf dem Hauptansichtscontroller angezeigt werden.
-
dismissTvProviderDialog(viewController)
- Wird durch eine Benutzeraktion ausgelöst (durch Auswahl von „Abbrechen“ oder „Andere TV-Anbieter“ im Apple-SSO-Dialogfeld).
- Der viewController-Parameter ist das Apple SSO-Dialogfeld und muss vom Hauptansichtscontroller entfernt werden.
-
B. Anlauffluss startup_flow
-
Starten Sie die Anwendung auf höherer Ebene.
-
Adobe Pass-
initiierena. Rufen Sie
init
auf, um eine einzelne Instanz von Adobe Pass Authentication AccessEnabler zu erstellen.- Abhängigkeit: Native iOS/tvOS-Bibliothek für die Adobe Pass-Authentifizierung (AccessEnabler)
b. Rufen Sie
setRequestor()
auf, um die Identität des Programmierers festzulegen, übergeben Sie dierequestorID
des Programmierers und (optional) ein Array von Adobe Pass-Authentifizierungsendpunkten. Bei tvOS müssen Sie auch den öffentlichen Schlüssel und das Geheimnis angeben. Weitere Informationen finden in der-Dokumentation .-
Abhängigkeit: gültige Adobe Pass-Authentifizierungsanforderungs-ID (mit Ihrem Adobe Pass-Authentifizierungskonto arbeiten)
Manager (um dies zu arrangieren). -
Trigger:
setRequestorComplete() Rückruf.
note note NOTE Berechtigungsanfragen können erst abgeschlossen werden, wenn die Identität des Antragstellers vollständig ermittelt wurde. Dies bedeutet effektiv, dass während der setRequestor()
alle nachfolgenden Berechtigungsanfragen ausgeführt werden. Beispielsweise werdencheckAuthentication()
blockiert.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()
-Callback ausgelöst wird (Teil des AccessEnabler-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 der AccessEnabler-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 nach einer vorhandenen Authentifizierung zu suchen, 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() Callback.
-
C. Authentifizierungsfluss ohne Apple SSO authn_flow_wo_applesso
-
Rufen Sie
getAuthentication()
auf, um den Authentifizierungsfluss zu initiieren oder um eine Bestätigung zu erhalten, dass der Benutzer bereits vorhanden ist
authentifiziert.Trigger:
-
Der setAuthenticationStatus()-Rückruf, wenn der Benutzer bereits authentifiziert ist. Fahren Sie in diesem Fall direkt mit dem Autorisierungsfluss“.
-
Der displayProviderDialog() Rückruf, wenn der Benutzer noch nicht authentifiziert ist.
-
-
Zeigen Sie dem Benutzer die Liste der Anbieter, die an gesendet wurden.
displayProviderDialog()
. -
Nachdem der Benutzer einen Anbieter ausgewählt hat, rufen Sie die URL des MVPD des Benutzers aus dem
navigateToUrl:
odernavigateToUrl:useSVC:
Callback ab und öffnen Sie einenUIWebView/WKWebView
oderSFSafariViewController
Controller und leiten Sie diesen Controller an die URL weiter. -
Durch die im vorherigen Schritt instanziierte
UIWebView/WKWebView
oderSFSafariViewController
landet der Benutzer auf der Anmeldeseite von MVPD und gibt Anmeldedaten ein. Mehrere Umleitungsvorgänge finden innerhalb des Controllers statt.
null
als Parameter aufruft. Dadurch kann AccessEnabler seinen internen Status bereinigen und den Authentifizierungsfluss zurücksetzen.-
Nach erfolgreicher Anmeldung durch den Benutzer erkennt Ihre Anwendungsebene das Laden einer bestimmten benutzerdefinierten URL. Beachten Sie, dass diese spezifische benutzerdefinierte URL tatsächlich ungültig ist und nicht vom Controller geladen werden soll. Sie darf von Ihrer Anwendung nur als Signal interpretiert werden, dass der Authentifizierungsfluss abgeschlossen ist und dass es sicher ist, den
UIWebView/WKWebView
oderSFSafariViewController
Controller zu schließen. Muss einSFSafariViewController
Controller verwendet werden, wird die spezifische benutzerdefinierte URL durch dieapplication's custom scheme
definiert (z. B.adbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com
). Andernfalls wird diese spezifische benutzerdefinierte URL durch dieADOBEPASS_REDIRECT_URL
-Konstante definiert (d. h.adobepass://ios.app
). -
Schließen Sie den Controller UIWebView/WKWebView oder SFSafariViewController und rufen Sie die API-Methode
handleExternalURL:url
AccessEnabler auf, die AccessEnabler anweist, 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. Ein Verwendungszweck für die Autorisierungsinformationen, die vom MVPD des Benutzers abgerufen werden, besteht darin, Ihre Benutzeroberfläche zu dekorieren (z. B. gesperrte/entsperrte Symbole neben geschützten Inhalten).- Trigger:
preauthorizedResources()
Callback - Ausführungspunkt: Nach Abschluss des Authentifizierungsflusses
- Trigger:
-
Wenn die Authentifizierung erfolgreich war, fahren Sie mit dem Autorisierungsfluss fort.
D. Authentifizierungsfluss mit Apple SSO auf iOS authn_flow_with_applesso
-
Rufen Sie
getAuthentication()
auf, um den Authentifizierungsfluss zu initiieren oder um eine Bestätigung zu erhalten, dass der Benutzer bereits authentifiziert ist.
Trigger:- Der presentTvProviderDialog() Rückruf, wenn der Benutzer nicht authentifiziert ist und der aktuelle Anforderer mindestens über eine MVPD verfügt, die SSO unterstützt. Wenn keine MVPDs SSO unterstützen, wird der klassische Authentifizierungsfluss verwendet.
-
Nachdem der Benutzer einen Anbieter ausgewählt hat, erhält die AccessEnabler-Bibliothek ein Authentifizierungstoken mit den vom VSA-Framework von Apple bereitgestellten Informationen.
-
Der setAuthenticationsStatus()Callback wird ausgelöst. An dieser Stelle sollte die Benutzerin bzw. der Benutzer mit Apple SSO authentifiziert werden.
-
[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. Ein Verwendungszweck für die Autorisierungsinformationen, die vom MVPD des Benutzers abgerufen werden, besteht darin, Ihre Benutzeroberfläche zu dekorieren (z. B. gesperrte/entsperrte Symbole neben geschützten Inhalten).- Trigger:
preauthorizedResources()
Callback - Ausführungspunkt: Nach Abschluss des Authentifizierungsflusses
- Trigger:
-
Wenn die Authentifizierung erfolgreich war, fahren Sie mit dem Autorisierungsfluss fort.
E. Authentifizierungsfluss mit Apple SSO unter tvOS authn_flow_with_applesso_tvOS
-
getAuthentication()
aufrufen, um den
Authentifizierungsfluss oder , um die Bestätigung zu erhalten, dass der Benutzer bereits
authentifiziert.
Trigger:- Der
presentTvProviderDialog()
Callback, wenn der Benutzer nicht authentifiziert ist und der aktuelle Anforderer mindestens über MVPD verfügt, das SSO unterstützt. Wenn keine MVPDs SSO unterstützen, wird der klassische Authentifizierungsfluss verwendet.
- Der
-
Nachdem der Benutzer einen Anbieter ausgewählt hat, wird der
status()
Callback aufgerufen. Es wird ein Registrierungs-Code bereitgestellt und die AccessEnabler-Bibliothek beginnt damit, den Server für eine erfolgreiche Authentifizierung auf dem zweiten Bildschirm abzufragen. -
Wenn der angegebene Registrierungs-Code verwendet wurde, um sich erfolgreich auf dem zweiten Bildschirm zu authentifizieren, wird der
setAuthenticatiosStatus()
-Callback ausgelöst. An dieser Stelle sollte die Benutzerin bzw. der Benutzer mit Apple SSO authentifiziert werden. -
[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. Ein Verwendungszweck für die Autorisierungsinformationen, die vom MVPD des Benutzers abgerufen werden, besteht darin, Ihre Benutzeroberfläche zu dekorieren (z. B. gesperrte/entsperrte Symbole neben geschützten Inhalten).-
Trigger:
preauthorizedResources()
Callback -
Ausführungspunkt: Nach Abschluss des Authentifizierungsflusses
-
-
Wenn die Authentifizierung erfolgreich war, fahren Sie mit dem Autorisierungsfluss fort.
F. Autorisierungsfluss authz_flow
-
Rufen Sie getAuthorization() auf, um den Autorisierungsfluss zu initiieren.
- Dependency: mit den MVPD(s) vereinbarte ResourceID(s).
- Die Ressourcen-IDs müssen mit den IDs übereinstimmen, die auf anderen Geräten oder Plattformen verwendet werden, und sie müssen für alle MVPDs identisch sein. Informationen zu Ressourcen-IDs finden Sie unter Ressourcenkennung
-
Authentifizierung und Autorisierung überprüfen.
-
Wenn der Aufruf getAuthorization() 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 ermitteln:
- 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 kurzlebige Medien-Token zu überprüfen, das vom obigen Aufruf getAuthorization() zurückgegeben wurde:- 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.
G. 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, können Sie es für wiedergeben
Der Benutzer.
-
H. Abmeldefluss ohne Apple SSO logout_flow_wo_AppleSSO
-
Rufen Sie
logout()
auf, um den Benutzer abzumelden. AccessEnabler löscht alle zwischengespeicherten Werte und Token. Nach dem Löschen des Cache führt AccessEnabler 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 muss dieser Aufruf in einem UIWebView/WKWebView- oder SFSafariViewController verarbeitet werden.a. Nach demselben Muster wie der Authentifizierungs-Workflow fordert die AccessEnabler-Domain über den
navigateToUrl:
- odernavigateToUrl:useSVC:
-Callback die Benutzeroberflächenanwendungsschicht auf, einen UIWebView/WKWebView- oder SFSafariViewController-Controller zu erstellen, und weist diesen an, die imurl
-Parameter des Callbacks bereitgestellte URL zu laden. Dies ist die URL des Abmeldeendpunkts auf dem Backend-Server.b. Ihre Anwendung muss die Aktivität des
UIWebView/WKWebView or SFSafariViewController
-Controllers überwachen und den Zeitpunkt erkennen, zu dem sie eine bestimmte benutzerdefinierte URL lädt, während sie mehrere Weiterleitungen durchläuft. Beachten Sie, dass diese spezifische benutzerdefinierte URL tatsächlich ungültig ist und nicht vom Controller geladen werden soll. Sie darf von Ihrer Anwendung nur als Signal interpretiert werden, dass der Abmeldefluss abgeschlossen ist und dass es sicher ist, denUIWebView/WKWebView
oderSFSafariViewController
Controller zu schließen. Wenn der Controller diese spezifische benutzerdefinierte URL lädt, muss die Anwendung denUIWebView/WKWebView or SFSafariViewController
-Controller schließen und die Methode "handleExternalURL:url
" von AccessEnabler aufrufen. Wenn einSFSafariViewController
Controller“ verwendet werden muss, wird die spezifische benutzerdefinierte URL durch dieapplication's custom scheme
definiert (z. B.adbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com
). Andernfalls wird diese spezifische benutzerdefinierte URL durch dieADOBEPASS_REDIRECT_URL
-Konstante definiert (d. h.adobepass://ios.app
).note note NOTE Der Abmeldefluss unterscheidet sich vom Authentifizierungsfluss insofern, als der Benutzer in keiner Weise mit dem UIWebView/WKWebView oder SFSafariViewController interagieren muss. Die Benutzeroberflächenanwendungsebene verwendet einen UIWebView/WKWebView oder SFSafariViewController, um sicherzustellen, dass alle Weiterleitungen befolgt werden. Daher ist es möglich (und empfohlen), den Controller während des Abmeldevorgangs unsichtbar (d. h. ausgeblendet) zu machen.