Manuel SDK d’iOS/tvOS (hérité) iostvos-sdk-cookbook

NOTE
Le contenu de cette page est fourni à titre d’information uniquement. L’utilisation de cette API nécessite une licence Adobe. Aucune utilisation non autorisée n’est autorisée.
IMPORTANT
Veillez à rester informé des dernières annonces de produits Authentification Adobe Pass et des délais de désactivation agrégés dans la page Annonces de produits.

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 d’iOS/tvOS.

La solution Droits d’authentification Adobe Pass pour iOS/tvOS est 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 AccessEnabler pour fournir l’accès au contenu limité.

  • Le domaine AccessEnabler - c’est là que 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 AccessEnabler) un ensemble de primitives de droits simples avec lesquelles vous implémentez les workflows de droits :

  1. Définition de l’identité du demandeur
  2. Vérifier et obtenir une authentification auprès d’un fournisseur d’identité spécifique
  3. Vérifier et obtenir l’autorisation pour une ressource particulière
  4. Déconnexion
  5. Flux SSO d’Apple par proxy du framework Apple VSA

L’activité réseau d’AccessEnabler a lieu dans son propre 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 AccessEnabler via les appels d’API exposés par la bibliothèque AccessEnabler.
  • AccessEnabler répond à la couche d’interface utilisateur par le biais des méthodes de rappel incluses dans le protocole AccessEnabler que la couche d’interface utilisateur enregistre auprès de la bibliothèque AccessEnabler.

Configuration du service d’ID Experience Cloud (identifiant visiteur) visitorIDSetup

La configuration de la valeur ID Experience Cloudest importante du point de vue Analytics. Une fois qu’une valeur de visitorID est définie, le SDK envoie ces informations avec chaque appel réseau et le serveur d’authentification Adobe Pass collecte ces informations. Vous pouvez mettre en corrélation les analyses du service d’authentification Adobe Pass avec tout autre rapport d’analyse que vous pouvez avoir à partir d’autres applications ou sites web. Vous trouverez des informations sur la configuration de l’identifiant visiteur ici.

Flux de droits entitlement

A. Conditions préalables

B. Flux de démarrage

C. Flux d’authentification avec le SSO d’Apple

D. Flux d’authentification avec le SSO Apple sur iOS

E. Flux d’authentification avec l’authentification unique Apple sur tvOS

F. Flux d’autorisation

G. Afficher le flux des médias

H. Flux de déconnexion sans SSO Apple

I. Flux de déconnexion avec l’authentification unique Apple

A. Prérequis prereqs

  1. Créez vos fonctions de rappel :

    • setRequestorComplete()

    • Déclenché par setRequestor(), renvoie un succès ou un échec.

    • La réussite indique que vous pouvez poursuivre les appels de droits.

    • displayProviderDialog(mvpds)

      • Déclenché par getAuthentication() uniquement si l’utilisateur n’a pas sélectionné de fournisseur (MVPD) et n’est pas encore authentifié.
      • Le paramètre mvpds est un tableau de fournisseurs disponibles pour l’utilisateur.
    • setAuthenticationStatus(status, errorcode)

      • Déclenché par checkAuthentication() à chaque fois.
      • Déclenché par getAuthentication() uniquement si l’utilisateur est déjà authentifié et a sélectionné un fournisseur.
      • Le statut renvoyé est succès ou échec. Le code d’erreur décrit le type de l’échec.
    • navigateToUrl(url)

      • Déclenché par getAuthentication() après la sélection d’un MVPD par l’utilisateur. Le paramètre url indique l’emplacement de la page de connexion de MVPD.
    • sendTrackingData(event, data)

      • Déclenché par checkAuthentication(), getAuthentication(), checkAuthorization(), getAuthorization(), setSelectedProvider().
      • Le paramètre event indique quel événement de droit s’est produit ; le paramètre data est une liste de valeurs relatives à l’événement.
    • setToken(token, resource)

      • Déclenché par checkAuthorization() et getAuthorization() après une autorisation réussie d’affichage d’une ressource.
      • Le paramètre token est le jeton de média de courte durée ; le paramètre resource est le contenu que l’utilisateur est autorisé à afficher.
    • tokenRequestFailed(resource, code, description)

      • Déclenché par checkAuthorization() et getAuthorization() après une autorisation infructueuse.
      • Le paramètre resource correspond au contenu que l’utilisateur tentait d’afficher ; le paramètre code correspond au code d’erreur indiquant le type d’échec ; le paramètre description décrit l’erreur associée au code d’erreur.
    • selectedProvider(mvpd)

      • Déclenché par getSelectedProvider().
      • Le paramètre mvpd fournit des informations sur le fournisseur sélectionné par l’utilisateur ou l’utilisatrice.
    • setMetadataStatus(metadata, key, arguments)

      • Déclenché par getMetadata().
      • Le paramètre metadata fournit les données spécifiques que vous avez demandées ; le paramètre key est la clé utilisée dans la requête getMetadata() et le paramètre arguments est le même dictionnaire que celui transmis à getMetadata().
    • preauthorizedResources(authorizedResources)

      • Déclenché par checkPreauthorizedResources().

      • Le paramètre authorizedResources présente les ressources que l’utilisateur
        est autorisé à afficher.

    • presentTvProviderDialog(viewController)

      • Déclenché par getAuthentication() lorsque le demandeur actuel prend en charge au moins un MVPD prenant en charge la connexion unique.
      • Le paramètre viewController correspond à la boîte de dialogue SSO d’Apple et doit être présenté sur le contrôleur de vue principal.
    • dismissTvProviderDialog(viewController)

      • Déclenché par une action de l’utilisateur (en sélectionnant « Annuler » ou « Autres fournisseurs de télévision » dans la boîte de dialogue SSO d’Apple).
      • Le paramètre viewController correspond à la boîte de dialogue SSO d’Apple et doit être ignoré du contrôleur de vue principal.

B. Flux de démarrage startup_flow

  1. Démarrez l’application de niveau supérieur.

  2. Lancement du
    d’authentification Adobe Pass

    a. Appelez init pour créer une instance unique d’Adobe Pass Authentication AccessEnabler.

    • Dépendance : Bibliothèque iOS/tvOS native d’authentification Adobe Pass (AccessEnabler)

    b. Appelez setRequestor() pour établir l’identité du programmeur ; transmettez le requestorID du programmeur et (éventuellement) un tableau de points d’entrée d’authentification Adobe Pass. Pour tvOS, vous devrez également fournir la clé publique et le secret. Pour plus d’informations🔗 consultez la documentation relative à Clientless .

    • Dépendance : ID de demandeur d’authentification Adobe Pass valide (utilisez votre compte d’authentification Adobe Pass)
      Manager pour organiser cela).

    • Triggers:

      Rappel setRequestorComplete().

    note note
    NOTE
    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 ultérieures. Par exemple, les 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 :

    1. 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.

    2. 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èque AccessEnabler, qui effectuera les appels réseau réels après la setRequestor(). Cette option peut parfois être interrompue si, par exemple, la connexion réseau est instable.

  3. Appelez checkAuthentication() pour vérifier une authentification existante sans lancer 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.

C. Flux d’authentification sans SSO Apple authn_flow_wo_applesso

  1. Appelez getAuthentication() pour lancer le flux d’authentification ou pour obtenir la confirmation que l’utilisateur est déjà
    authentifié.

    Triggers:

  2. Présenter à l'utilisateur la liste des fournisseurs envoyés à
    displayProviderDialog().

  3. Une fois que l’utilisateur a sélectionné un fournisseur, récupérez l’URL du MVPD de l’utilisateur à partir du rappel navigateToUrl: ou navigateToUrl:useSVC:, ouvrez un contrôleur UIWebView/WKWebView ou SFSafariViewController et dirigez-le vers l’URL.

  4. Par le biais du UIWebView/WKWebView ou de l’SFSafariViewController instancié à l’étape précédente, l’utilisateur accède à la page de connexion de MVPD et saisit ses informations d’identification. Plusieurs opérations de redirection ont lieu au sein du contrôleur.

NOTE
À ce stade, l’utilisateur a la possibilité d’annuler le flux d’authentification. Si cela se produit, votre calque d’interface utilisateur est chargé d’informer l’AccessEnabler de cet événement en appelant setSelectedProvider() avec null comme paramètre. Cela permet à AccessEnabler de nettoyer son état interne et de réinitialiser le flux d’authentification.
  1. Une fois la connexion établie par l’utilisateur, votre couche d’application détecte le chargement d’une URL personnalisée spécifique. Notez que cette URL personnalisée spécifique n'est pas valide et qu'elle n'est pas destinée à être chargée par le contrôleur. Il doit être interprété par votre application uniquement comme un signal indiquant que le flux d’authentification est terminé et qu’il est sûr de fermer le contrôleur UIWebView/WKWebView ou SFSafariViewController. Si l’utilisation d’un SFSafariViewController contrôleur est requise, l’URL personnalisée spécifique est définie par le application's custom scheme (par exemple, adbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com). Dans le cas contraire, cette URL personnalisée spécifique est définie par la constante ADOBEPASS_REDIRECT_URL (c’est-à-dire adobepass://ios.app).

  2. Fermez le contrôleur UIWebView/WKWebView ou SFSafariViewController et appelez la méthode API handleExternalURL:url d'AccessEnabler, qui demande à AccessEnabler de récupérer le jeton d'authentification du serveur principal.

  3. (Facultatif) Appelez checkPreauthorizedResources(resources) pour vérifier quelles ressources l’utilisateur est autorisé à afficher. Le paramètre resources est un tableau de ressources protégées associé au jeton d’authentification de l’utilisateur. Les informations d’autorisation obtenues à partir du MVPD de l’utilisateur peuvent être utilisées pour décorer l’interface utilisateur (par exemple, des symboles verrouillés/déverrouillés en regard du contenu protégé).

  4. Si l’authentification a réussi, passez au flux d’autorisation.

D. Flux d’authentification avec l’authentification unique Apple sur iOS authn_flow_with_applesso

  1. Appelez getAuthentication() pour lancer le flux d’authentification ou pour obtenir la confirmation que l’utilisateur est déjà authentifié.
    Triggers:

    • Le rappel presentTvProviderDialog() si l’utilisateur n’est pas authentifié et que le demandeur actuel dispose au moins d’un MVPD prenant en charge la connexion unique. Si aucun MVPD ne prend en charge la connexion unique, le flux d’authentification classique est utilisé.
  2. Une fois que l’utilisateur a sélectionné un fournisseur, la bibliothèque AccessEnabler obtient un jeton d’authentification contenant les informations fournies par le framework VSA d’Apple.

  3. Le rappel setAuthenticationsStatus() sera déclenché. À ce stade, l’utilisateur doit être authentifié avec l’authentification unique Apple.

  4. [Facultatif] Appelez checkPreauthorizedResources(resources) pour vérifier quelles ressources l’utilisateur est autorisé à afficher. Le paramètre resources est un tableau de ressources protégées associé au jeton d’authentification de l’utilisateur. Les informations d’autorisation obtenues à partir du MVPD de l’utilisateur peuvent être utilisées pour décorer l’interface utilisateur (par exemple, des symboles verrouillés/déverrouillés en regard du contenu protégé).

  5. Si l’authentification a réussi, passez au flux d’autorisation.

E. Flux d’authentification avec le SSO d’Apple sur tvOS authn_flow_with_applesso_tvOS

  1. Appelez getAuthentication() pour lancer l’opération .
    flux d’authentification ou pour obtenir la confirmation que l’utilisateur est déjà
    authentifié.
    Triggers:

    • Le rappel presentTvProviderDialog(), si l’utilisateur n’est pas authentifié et que le demandeur actuel dispose au moins d’un MVPD prenant en charge la connexion unique. Si aucun MVPD ne prend en charge la connexion unique, le flux d’authentification classique est utilisé.
  2. Une fois que l’utilisateur a sélectionné un fournisseur, le rappel status() est appelé. Un code d’enregistrement est fourni et la bibliothèque AccessEnabler commence à interroger le serveur pour une authentification réussie sur le deuxième écran.

  3. Si le code d’enregistrement fourni a été utilisé pour s’authentifier correctement sur le deuxième écran, le rappel setAuthenticatiosStatus() est déclenché. À ce stade, l’utilisateur doit être authentifié avec l’authentification unique Apple.

  4. [Facultatif] Appelez checkPreauthorizedResources(resources) pour vérifier quelles ressources l’utilisateur est autorisé à afficher. Le paramètre resources est un tableau de ressources protégées associé au jeton d’authentification de l’utilisateur. Les informations d’autorisation obtenues à partir du MVPD de l’utilisateur peuvent être utilisées pour décorer l’interface utilisateur (par exemple, des symboles verrouillés/déverrouillés en regard du contenu protégé).

  5. Si l’authentification a réussi, passez au flux d’autorisation.

F. Flux d’autorisation authz_flow

  1. Appelez getAuthorization() pour lancer le flux d’autorisation.

    • Dépendance : ResourceID valides convenus avec le ou les MVPD.
    • Les identifiants de ressource doivent être identiques à ceux utilisés sur d’autres appareils ou plateformes et seront identiques sur tous les MVPD. Pour plus d’informations sur les identifiants de ressource, voir Identifiant de ressource
  2. Validez l’authentification et l’autorisation.

    • Si l’appel getAuthorization() réussit : l’utilisateur possède des 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) :

      • 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.
  3. 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.
  4. Retournez à votre flux d’application normal.

G. Afficher le flux multimédia media_flow

  1. L’utilisateur sélectionne le média à afficher.

  2. 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 pendant
      l’utilisateur .

H. Flux de déconnexion sans SSO Apple logout_flow_wo_AppleSSO

  1. Appelez logout() pour déconnecter l’utilisateur. AccessEnabler efface toutes les valeurs et tous les jetons mis en cache. Après avoir effacé le cache, AccessEnabler effectue 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 doit être géré à l'intérieur d'un contrôleur UIWebView/WKWebView ou SFSafariViewController.

    a. En suivant le même modèle que le workflow d’authentification, le domaine AccessEnabler effectue une requête à la couche d’application de l’interface utilisateur, via le rappel navigateToUrl: ou navigateToUrl:useSVC:, pour créer un contrôleur UIWebView/WKWebView ou SFSafariViewController et lui demander de charger l’URL fournie dans le paramètre url du rappel. Il s’agit de l’URL du point d’entrée de déconnexion sur le serveur principal.

    b. Votre application doit surveiller l’activité du contrôleur de UIWebView/WKWebView or SFSafariViewController et détecter le moment où il charge une URL personnalisée spécifique, car il passe par plusieurs redirections. Notez que cette URL personnalisée spécifique n'est pas valide et qu'elle n'est pas destinée à être chargée par le contrôleur. Votre application doit l'interpréter uniquement comme un signal indiquant que le flux de déconnexion est terminé et qu'il est sûr de fermer le contrôleur UIWebView/WKWebView ou SFSafariViewController. Lorsque le contrôleur charge cette URL personnalisée spécifique, votre application doit fermer le contrôleur UIWebView/WKWebView or SFSafariViewController et appeler la méthode handleExternalURL:urlAPI AccessEnabler. Si l’utilisation d’un SFSafariViewControllercontrôleur est requise, l’URL personnalisée spécifique est définie par le application's custom scheme (par exemple, adbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com), sinon cette URL personnalisée spécifique est définie par la constante ADOBEPASS_REDIRECT_URL (c’est-à-dire adobepass://ios.app).

    note note
    NOTE
    Le flux de déconnexion diffère du flux d’authentification dans la mesure où l’utilisateur n’est pas tenu d’interagir de quelque manière que ce soit avec l’UIWebView/WKWebView ou SFSafariViewController. La couche d’application de l’interface utilisateur utilise un UIWebView/WKWebView ou SFSafariViewController pour s’assurer que toutes les redirections sont suivies. Par conséquent, il est possible (et recommandé) de rendre le contrôleur invisible (c'est-à-dire masqué) pendant le processus de déconnexion.

I. Flux de déconnexion avec l’authentification unique Apple logout_flow_with_AppleSSO

  1. Appelez logout() pour déconnecter l’utilisateur.
  2. Le rappel status() sera appelé avec l’ID VSA203.
  3. L’utilisateur doit également être invité à se connecter à partir des paramètres système. Si vous ne le faites pas, une nouvelle authentification sera effectuée lorsque l’application sera relancée.
recommendation-more-help
3f5e655c-af63-48cc-9769-2b6803cc5f4b