Manuel d’intégration d’Amazon FireOS (hérité) amazon-fireos-integration-cookbook
Introduction intro
Ce document décrit les workflows de droits qu’une application de niveau supérieur d’un programmeur peut implémenter via les API exposées par la bibliothèque AccessEnabler FireOS d’Amazon.
La solution Droits d’authentification Adobe Pass pour Amazon FireOS est finalement divisée en deux domaines :
-
Le domaine de l’interface utilisateur : il s’agit de la couche d’application de niveau supérieur qui implémente l’interface utilisateur et utilise les services fournis par la bibliothèque
AccessEnablerpour fournir l’accès au contenu limité. -
Le domaine
AccessEnableroù les workflows de droits sont implémentés sous la forme de :- Appels réseau effectués aux serveurs principaux d’Adobe
- Règles de logique commerciale liées aux workflows d’authentification et d’autorisation
- Gestion de diverses ressources et traitement de l’état des workflows (tel que le cache de jetons)
L’objectif du domaine AccessEnabler est de masquer toutes les complexités des workflows de droits et de fournir à l’application de couche supérieure (par le biais de la bibliothèque de AccessEnabler) un ensemble de primitives de droits simples. Ce processus permet de mettre en œuvre les workflows de droits :
- Définissez l’identité du demandeur.
- Vérifiez et obtenez une authentification auprès d’un fournisseur d’identité spécifique.
- Vérifiez et obtenez l’autorisation pour une ressource spécifique.
- Déconnexion.
L’activité réseau de l’AccessEnabler se déroule dans un autre thread, de sorte que le thread de l’interface utilisateur n’est jamais bloqué. Par conséquent, le canal de communication bidirectionnel entre les deux domaines d’application doit suivre un modèle entièrement asynchrone :
- La couche d’application de l’interface utilisateur envoie des messages au domaine
AccessEnablervia les appels d’API exposés par la bibliothèqueAccessEnabler. - Le
AccessEnablerrépond à la couche d’interface utilisateur par le biais des méthodes de rappel incluses dans le protocoleAccessEnablerque la couche d’interface utilisateur enregistre auprès de la bibliothèqueAccessEnabler.
Flux de droits entitlement
A. Prérequis prereqs
-
Créez vos fonctions de rappel :
-
- Déclenché par
setRequestor(), renvoie un succès ou un échec. La réussite indique que vous pouvez poursuivre les appels de droits.
- Déclenché par
-
- Déclenché par
getAuthentication()uniquement si l’utilisateur n’a pas sélectionné de fournisseur (MVPD) et n’est pas encore authentifié. Le paramètremvpdsest un tableau de fournisseurs disponibles pour l’utilisateur.
- Déclenché par
-
setAuthenticationStatus(status, reason)-
Déclenché par
checkAuthentication()à chaque fois. Déclenché pargetAuthentication()uniquement si l’utilisateur est déjà authentifié et a sélectionné un fournisseur. -
Le statut renvoyé est authentifié ou non authentifié. La raison décrit un échec d’authentification ou une action de déconnexion.
-
-
- Ignorée dans AmazonFireOS SDK, la méthode est utilisée sur les plateformes Android où est déclenchée par
getAuthentication()une fois que l’utilisateur a sélectionné un MVPD. Le paramètreurlindique l’emplacement de la page de connexion de MVPD.
- Ignorée dans AmazonFireOS SDK, la méthode est utilisée sur les plateformes Android où est déclenchée par
-
- Déclenché par
checkAuthentication(), getAuthentication(), checkAuthorization(), getAuthorization(), setSelectedProvider().
Le paramètreeventindique quel événement de droit s’est produit ; le paramètredataest une liste de valeurs relatives à l’événement.
- Déclenché par
-
- Déclenché par
checkAuthorization()etgetAuthorization()après une autorisation réussie d’affichage d’une ressource. - Le paramètre
tokenest le jeton de média de courte durée ; le paramètreresourceest le contenu que l’utilisateur est autorisé à afficher.
- Déclenché par
-
tokenRequestFailed(resource, code, description)- Déclenché par
checkAuthorization()etgetAuthorization()après une autorisation infructueuse. - Le paramètre
resourcecorrespond au contenu que l’utilisateur tentait d’afficher ; le paramètrecodecorrespond au code d’erreur indiquant le type d’échec ; le paramètredescriptiondécrit l’erreur associée au code d’erreur.
- Déclenché par
-
- Déclenché par
getSelectedProvider(). - Le paramètre
mvpdfournit des informations sur le fournisseur sélectionné par l’utilisateur ou l’utilisatrice.
- Déclenché par
-
setMetadataStatus(metadata, key, arguments)- Déclenché par
getMetadata(). - Le paramètre
metadatafournit les données spécifiques que vous avez demandées ; le paramètrekeyest la clé utilisée dans la requêtegetMetadata(); et le paramètreargumentsest le même dictionnaire que celui transmis àgetMetadata().
- Déclenché par
-
preauthorizedResources(resources)- Déclenché par
checkPreauthorizedResources(). - Le paramètre
authorizedResourcesprésente les ressources que l’utilisateur est autorisé à afficher.
- Déclenché par
-
B. Flux de démarrage startup_flow
-
Démarrez l’application de niveau supérieur.
-
Lancer l’authentification Adobe Pass.
-
Appelez
getInstancepour créer une instance unique de l’AccessEnablerd’authentification Adobe Pass.- Adobe Pass Dépendance : Bibliothèque FireOS native d’authentification Amazon (
AccessEnabler)
- Adobe Pass Dépendance : Bibliothèque FireOS native d’authentification Amazon (
-
Appelez
setRequestor()pour établir l’identité du programmeur ; transmettez lerequestorIDdu programmeur et (éventuellement) un tableau de points d’entrée d’authentification Adobe Pass.-
Dépendance : ID de demandeur d’authentification Adobe Pass valide (demandez l’aide de votre gestionnaire de compte d’authentification Adobe Pass).
-
Rappel Triggers: setRequestorComplete()
-
Aucune demande de droit ne peut être traitée tant que l’identité du demandeur n’est pas entièrement établie. Cela signifie effectivement que, pendant que setRequestor() est toujours en cours d’exécution, toutes les demandes de droits suivantes (par exemple,
checkAuthentication()) sont bloquées.Vous disposez de deux options de mise en œuvre : une fois les informations d’identification du demandeur envoyées au serveur principal, la couche d’application de l’interface utilisateur peut choisir l’une des deux approches suivantes :
- Attendez le déclenchement du rappel
setRequestorComplete()(partie du déléguéAccessEnabler). Cette option offre la plus grande certitude quant à la réalisation de lsetRequestor()opération. Elle est donc recommandée pour la plupart des implémentations. - Continuez sans attendre le déclenchement du rappel
setRequestorComplete()et commencez à émettre des demandes de droits. Ces appels (checkAuthentication, checkAuthorization, getAuthentication, getAuthorization, checkPreauthorizedResource, getMetadata, logout) sont mis en file d'attente par la bibliothèqueAccessEnabler, qui effectuera les appels réseau réels après lasetRequestor(). Cette option peut parfois être interrompue si, par exemple, la connexion réseau est instable.
-
-
Appelez checkAuthentication() pour vérifier une authentification existante sans initier le flux d’authentification complet. Si cet appel réussit, vous pouvez passer directement au flux d’autorisation. Dans le cas contraire, passez au flux d’authentification.
-
Dépendance : un appel réussi à
setRequestor()(cette dépendance s’applique également à tous les appels suivants). -
Rappel Triggers: setAuthenticationStatus()
C. Flux d’authentification authn_flow
-
Appelez
getAuthentication()pour lancer le flux d’authentification ou pour obtenir la confirmation que l’utilisateur est déjà authentifié.Triggers:
- Le rappel setAuthenticationStatus() , si l’utilisateur est déjà authentifié. Dans ce cas, passez directement au flux d’autorisation.
- Le rappel displayProviderDialog() , si l’utilisateur n’est pas encore authentifié.
-
Présentez à l'utilisateur la liste des fournisseurs envoyés à
displayProviderDialog(). -
Une fois que l'utilisateur a sélectionné un fournisseur, une vue Web ouvre la page du fournisseur pour permettre à l'utilisateur de se connecter
note note NOTE À ce stade, l’utilisateur a la possibilité d’annuler le flux d’authentification. Si cela se produit, le AccessEnablernettoie son état interne et réinitialise le flux d’authentification. -
Une fois la connexion établie par l'utilisateur, WebView se ferme.
-
appelez
getAuthenticationToken(),qui demande auAccessEnablerde récupérer le jeton d’authentification du serveur principal. -
[Facultatif] Appelez
checkPreauthorizedResources(resources)pour vérifier quelles ressources l’utilisateur est autorisé à afficher. Le paramètreresourcesest un tableau de ressources protégées associé au jeton d’authentification de l’utilisateur.Triggers: rappel
preAuthorizedResources()
Point d’exécution : après le flux d’authentification terminé -
Si l’authentification a réussi, passez au flux d’autorisation.
D. Flux d’autorisation authz_flow
-
Appelez
getAuthorization()pour lancer le flux d’autorisation.Dépendance : identifiant(s) de ressource valide(s) convenu(s) avec le ou les MVPD.
Remarque : ResourceID doivent être identiques à ceux utilisés sur d’autres appareils ou plateformes et seront identiques sur tous les MVPD.
-
Validez l’authentification et l’autorisation.
-
Si l’appel
getAuthorization()réussit : l’utilisateur dispose de jetons AuthN et AuthZ valides (l’utilisateur est authentifié et autorisé à regarder le média demandé). -
Si
getAuthorization()échoue : examinez l’exception renvoyée pour déterminer son type (AuthN, AuthZ ou autre chose) :- S’il s’agissait d’une erreur d’authentification (AuthN), redémarrez le flux d’authentification.
- S’il s’agissait d’une erreur d’autorisation (AuthZ), l’utilisateur n’est pas autorisé à regarder le média demandé et un message d’erreur doit s’afficher à l’intention de l’utilisateur.
- S’il y a eu un autre type d’erreur (erreur de connexion, erreur réseau, etc.), affichez un message d’erreur approprié à l’intention de l’utilisateur.
-
-
Validez le jeton de média court.
Utilisez la bibliothèque Vérificateur de jeton de média d’authentification Adobe Pass pour vérifier le jeton de média de courte durée renvoyé par l’appel
getAuthorization()ci-dessus :- Si la validation réussit : lisez le média demandé pour l’utilisateur.
- Si la validation échoue : le jeton AuthZ n’était pas valide, la requête de média doit être refusée et un message d’erreur doit s’afficher à l’intention de l’utilisateur.
-
Retournez à votre flux d’application normal.
E. Afficher le flux multimédia media_flow
-
L’utilisateur sélectionne le média à afficher.
-
Les médias sont-ils protégés ? Votre application vérifie si le média sélectionné est protégé :
- Si le média sélectionné est protégé, votre application lance le flux d’autorisation ci-dessus.
- Si le média sélectionné n’est pas protégé, lisez le média pour l’utilisateur.
F. Flux de déconnexion logout_flow
-
Appelez
logout()pour déconnecter l’utilisateur. LeAccessEnablerefface toutes les valeurs mises en cache et les jetons obtenus par l’utilisateur pour le MVPD actuel pour tous les demandeurs partageant la connexion via l’authentification unique. Après avoir effacé le cache, leAccessEnablereffectue un appel au serveur pour nettoyer les sessions côté serveur. Notez que puisque l’appel au serveur peut entraîner une redirection SAML vers l’IdP (cela permet le nettoyage de la session du côté IdP), cet appel doit suivre toutes les redirections. Pour cette raison, cet appel sera géré à l'intérieur d'un contrôle WebView, invisible pour l'utilisateur.Remarque : le flux de déconnexion diffère du flux d’authentification dans la mesure où l’utilisateur n’est pas tenu d’interagir avec le WebView de quelque manière que ce soit. Il est donc possible (et recommandé) de rendre le contrôle WebView invisible (c'est-à-dire masqué) pendant le processus de déconnexion.