Guía del SDK para iOS/tvOS iostvos-sdk-cookbook
Introducción intro
En este documento se describen los flujos de trabajo de derechos que la aplicación de nivel superior de un programador puede implementar a través de las API expuestas por la biblioteca AccessEnabler de iOS/tvOS.
La solución de asignación de derechos de autenticación de Adobe Pass para iOS/tvOS se divide finalmente en dos dominios:
-
Dominio de interfaz de usuario: es la capa de aplicación de nivel superior que implementa la interfaz de usuario y utiliza los servicios proporcionados por la biblioteca AccessEnabler para proporcionar acceso al contenido restringido.
-
Dominio de AccessEnabler: aquí es donde se implementan los flujos de trabajo de asignación de derechos en forma de:
- Llamadas de red realizadas a los servidores back-end de Adobe
- Reglas de lógica empresarial relacionadas con los flujos de trabajo de autenticación y autorización
- Administración de varios recursos y procesamiento del estado del flujo de trabajo (como la caché de símbolos)
El objetivo del dominio AccessEnabler es ocultar todas las complejidades de los flujos de trabajo de asignación de derechos y proporcionar a la aplicación de capa superior (a través de la biblioteca AccessEnabler) un conjunto de primitivas de asignación de derechos simples con las que implementar los flujos de trabajo de asignación de derechos:
- Establecer la identidad del solicitante
- Comprobación y obtención de autenticación con un proveedor de identidad concreto
- Comprobación y obtención de autorización para un recurso concreto
- Cerrar sesión
- El SSO de Apple fluye mediante la indexación del marco VSA de Apple
La actividad de red de AccessEnabler tiene lugar en su propio subproceso, por lo que el subproceso de la interfaz de usuario nunca se bloquea. Como resultado, el canal de comunicación bidireccional entre los dos dominios de aplicación debe seguir un patrón totalmente asincrónico:
- La capa de aplicación de la interfaz de usuario envía mensajes al dominio AccessEnabler a través de las llamadas de API expuestas por la biblioteca AccessEnabler.
- AccessEnabler responde a la capa de interfaz de usuario mediante los métodos de devolución de llamada incluidos en el protocolo AccessEnabler que la capa de interfaz de usuario registra con la biblioteca AccessEnabler.
Configuración del servicio de ID de Experience Cloud (ID de visitante) visitorIDSetup
La configuración del valor ID de Experience Cloud es importante desde el punto de vista de Analytics. Una vez establecido el valor visitorID
, el SDK envía esta información junto con cada llamada de red y el servidor de autenticación Adobe Pass recopila esta información. Puede correlacionar los análisis del servicio de autenticación de Adobe Pass con cualquier otro informe de análisis que pueda tener de otras aplicaciones o sitios web. Encontrará información sobre cómo configurar visitorID aquí.
Flujos de derecho entitlement
A. Requisitos previos
B. Flujo de inicio
C. Flujo de autenticación con Apple SSO
D. Flujo de autenticación con Apple SSO en iOS
E. Flujo de autenticación con Apple SSO en tvOS
F. Flujo de autorización
G. Flujo de medios de vista
H. Flujo de cierre de sesión sin Apple SSO
I. Flujo de cierre de sesión con Apple SSO
A. Requisitos previos prereqs
-
Cree sus funciones de devolución de llamada:
-
setRequestorComplete()
-
Activado por setRequestor(), devuelve un resultado correcto o erróneo.
-
El éxito indica que se puede continuar con las llamadas de asignación de derechos.
-
- Activado por
getAuthentication()
solo si el usuario no ha seleccionado ningún proveedor (MVPD) y aún no se ha autenticado. - El parámetro
mvpds
es una matriz de proveedores disponibles para el usuario.
- Activado por
-
setAuthenticationStatus(status, errorcode)
- Activado por
checkAuthentication()
cada vez. - Activado por
getAuthentication()
solo si el usuario ya se ha autenticado y ha seleccionado un proveedor. - El estado devuelto es éxito o error, el código de error describe el tipo de error.
- Activado por
-
- Activado por
getAuthentication()
después de que el usuario seleccione una MVPD. El parámetrourl
proporciona la ubicación de la página de inicio de sesión de la MVPD.
- Activado por
-
sendTrackingData(event, data)
- Activado por
checkAuthentication()
,getAuthentication()
,checkAuthorization()
,getAuthorization()
,setSelectedProvider()
. - El parámetro
event
indica qué evento de asignación de derechos se produjo; el parámetrodata
es una lista de valores relacionados con el evento.
- Activado por
-
setToken(token, resource)
- Activado por checkAuthorization() y getAuthorization() tras una autorización correcta para ver un recurso.
- El parámetro
token
es el token de medios de corta duración; el parámetroresource
es el contenido que el usuario tiene autorización para ver.
-
tokenRequestFailed(resource, code, description)
- Activado por checkAuthorization() y getAuthorization() tras una autorización incorrecta.
- El parámetro
resource
es el contenido que el usuario intentaba ver; el parámetrocode
es el código de error que indica qué tipo de error se produjo; el parámetrodescription
describe el error asociado con el código de error.
-
selectedProvider(mvpd)
- Activado por
getSelectedProvider()
. - El parámetro
mvpd
proporciona información sobre el proveedor seleccionado por el usuario.
- Activado por
-
setMetadataStatus(metadata, key, arguments)
- Activado por
getMetadata().
- El parámetro
metadata
proporciona los datos específicos solicitados; el parámetrokey
es la clave utilizada en la solicitud getMetadata(); y el parámetroarguments
es el mismo diccionario que se pasó a getMetadata().
- Activado por
-
preauthorizedResources(authorizedResources)
-
Activado por
checkPreauthorizedResources()
. -
El parámetro
authorizedResources
presenta los recursos que el usuario
tiene autorización para ver.
-
-
presentTvProviderDialog(viewController)
- Se activa por getAuthentication() cuando el solicitante actual admite al menos en MVPD compatibles con SSO.
- El parámetro viewController es el cuadro de diálogo de SSO de Apple y debe presentarse en el controlador de vista principal.
-
dismissTvProviderDialog(viewController)
- Se activa mediante una acción del usuario (seleccionando "Cancelar" u "Otros proveedores de TV" en el cuadro de diálogo de SSO de Apple).
- El parámetro viewController es el cuadro de diálogo de SSO de Apple y debe descartarse del controlador de vista principal.
-
B. Flujo de inicio startup_flow
-
Iniciar la aplicación de nivel superior.
-
Iniciar autenticación de Adobe Pass
a. Llame a
init
para crear una sola instancia del activador de acceso de autenticación de Adobe Pass.- Dependencia: Biblioteca iOS/tvOS nativa de autenticación de Adobe Pass (AccessEnabler)
b. Llame a
setRequestor()
para establecer la identidad del programador; paserequestorID
del programador y (opcionalmente) una matriz de extremos de autenticación de Adobe Pass. Para tvOS también deberá proporcionar la clave pública y el secreto. Consulte Documentación sin cliente para obtener más información.-
Dependencia: ID de solicitante de autenticación de Adobe Pass válido (trabaje con su cuenta de autenticación de Adobe Pass)
Responsable para organizar esto). -
Déclencheur:
setRequestorComplete() llamada de retorno.
note note NOTE No se pueden completar solicitudes de asignación de derechos hasta que se haya establecido completamente la identidad del solicitante. Esto significa que mientras setRequestor()
sigue ejecutándose, todas las solicitudes de derechos subsiguientes. Por ejemplo,checkAuthentication()
están bloqueados.Tiene dos opciones de implementación: una vez que la información de identificación del solicitante se envía al servidor back-end, la capa de aplicación de la interfaz de usuario puede elegir uno de los dos enfoques siguientes:
-
Espere a que se active la llamada de retorno
setRequestorComplete()
(parte del delegado AccessEnabler). Esta opción proporciona la mayor certeza de quesetRequestor()
se completó, por lo que se recomienda para la mayoría de las implementaciones. -
Continúe sin esperar a que se active la llamada de retorno
setRequestorComplete()
y comience a emitir solicitudes de asignación de derechos. Estas llamadas (checkAuthentication, checkAuthorization, getAuthentication, getAuthorization, checkPreauthorizedResource, getMetadata, logout) están en cola por la biblioteca AccessEnabler, que realizará las llamadas de red reales después desetRequestor()
. Esta opción se puede interrumpir ocasionalmente si, por ejemplo, la conexión de red es inestable.
-
Llame a
checkAuthentication()
para comprobar si hay una autenticación existente sin iniciar el flujo de autenticación completo. Si esta llamada se realiza correctamente, puede continuar directamente al flujo de autorización. Si no es así, continúe con el flujo de autenticación.-
Dependencia: Una llamada correcta a setRequestor() (esta dependencia también se aplica a todas las llamadas subsiguientes).
-
Déclencheur: setAuthenticationStatus() devolución de llamada.
-
C. Flujo de autenticación sin SSO de Apple authn_flow_wo_applesso
-
Llame a
getAuthentication()
para iniciar el flujo de autenticación o para obtener confirmación de que el usuario ya está
autenticado.Déclencheur:
-
La llamada de retorno setAuthenticationStatus(), si el usuario ya está autenticado. En este caso, continúe directamente al Flujo de autorización.
-
La llamada de retorno displayProviderDialog(), si el usuario aún no está autenticado.
-
-
Presentar al usuario la lista de proveedores enviados a
displayProviderDialog()
. -
Una vez que el usuario seleccione un proveedor, obtenga la URL de la MVPD del usuario de la llamada de retorno
navigateToUrl:
onavigateToUrl:useSVC:
, abra un controladorUIWebView/WKWebView
oSFSafariViewController
y dirija ese controlador a la URL. -
A través de
UIWebView/WKWebView
oSFSafariViewController
creados en el paso anterior, el usuario aterriza en la página de inicio de sesión de la MVPD e introduce credenciales de inicio de sesión. Se realizan varias operaciones de redirección en el controlador.
null
como parámetro. Esto permite al AccessEnabler limpiar su estado interno y restablecer el flujo de autenticación.-
Una vez que el usuario ha iniciado sesión correctamente, la capa de aplicación detecta la carga de una dirección URL personalizada específica. Tenga en cuenta que esta dirección URL personalizada específica no es válida y no está pensada para que el controlador la cargue. Solo su aplicación debe interpretarlo como una señal de que el flujo de autenticación se ha completado y de que es seguro cerrar el controlador
UIWebView/WKWebView
oSFSafariViewController
. En caso de que se requiera el uso de un controladorSFSafariViewController
, la dirección URL personalizada específica está definida porapplication's custom scheme
(p. ej.adbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com
); de lo contrario, esta dirección URL personalizada específica está definida por la constanteADOBEPASS_REDIRECT_URL
(es decir,adobepass://ios.app
). -
Cierre el controlador UIWebView/WKWebView o SFSafariViewController y llame al método de API
handleExternalURL:url
de AccessEnabler, que indica a AccessEnabler que recupere el token de autenticación del servidor back-end. -
(Opcional) Llame a
checkPreauthorizedResources(resources)
para comprobar qué recursos puede ver el usuario. El parámetroresources
es una matriz de recursos protegidos asociados al token de autenticación del usuario. Un uso de la información de autorización obtenida del MVPD del usuario es decorar su interfaz de usuario (por ejemplo, símbolos bloqueados/desbloqueados junto al contenido protegido).- Déclencheur:
preauthorizedResources()
devolución de llamada - Punto de ejecución: después del flujo de autenticación completado
- Déclencheur:
-
Si la autenticación se ha realizado correctamente, continúe con el Flujo de autorización.
D. Flujo de autenticación con Apple SSO en iOS authn_flow_with_applesso
-
Llame a
getAuthentication()
para iniciar el flujo de autenticación o para obtener confirmación de que el usuario ya se ha autenticado.
Déclencheur:- La llamada de retorno presentTvProviderDialog(), si el usuario no está autenticado y el solicitante actual tiene al menos en MVPD que admite SSO. Si ninguna MVPD admite SSO, se utilizará el flujo de autenticación clásico.
-
Una vez que el usuario selecciona un proveedor, la biblioteca AccessEnabler obtiene un token de autenticación con la información proporcionada por el marco de VSA de Apple.
-
Se desencadenará la devolución de llamada setAuthenticationsStatus(). En este punto, el usuario debe autenticarse con Apple SSO.
-
[Opcional] Llame a
checkPreauthorizedResources(resources)
para comprobar qué recursos puede ver el usuario. El parámetroresources
es una matriz de recursos protegidos asociados al token de autenticación del usuario. Un uso de la información de autorización obtenida del MVPD del usuario es decorar su interfaz de usuario (por ejemplo, símbolos bloqueados / desbloqueados junto al contenido protegido).- Déclencheur:
preauthorizedResources()
devolución de llamada - Punto de ejecución: después del flujo de autenticación completado
- Déclencheur:
-
Si la autenticación se ha realizado correctamente, continúe con el Flujo de autorización.
E. Flujo de autenticación con Apple SSO en tvOS authn_flow_with_applesso_tvOS
-
Llamar a
getAuthentication()
para iniciar
flujo de autenticación o para obtener confirmación de que el usuario ya está
autenticado.
Déclencheur:- La llamada de retorno
presentTvProviderDialog()
, si el usuario no está autenticado y el solicitante actual tiene al menos una MVPD que admita SSO. Si ninguna MVPD admite SSO, se utilizará el flujo de autenticación clásico.
- La llamada de retorno
-
Una vez que el usuario seleccione un proveedor, se llamará a la devolución de llamada
status()
. Se proporcionará un código de registro y la biblioteca AccessEnabler comenzará a sondear el servidor para obtener una autenticación de segunda pantalla correcta. -
Si el código de registro proporcionado se utilizó para autenticarse correctamente en la segunda pantalla, se activará la devolución de llamada
setAuthenticatiosStatus()
. En este punto, el usuario debe autenticarse con Apple SSO. -
[Opcional] Llame a
checkPreauthorizedResources(resources)
para comprobar qué recursos puede ver el usuario. El parámetroresources
es una matriz de recursos protegidos asociados al token de autenticación del usuario. Un uso de la información de autorización obtenida del MVPD del usuario es decorar su interfaz de usuario (por ejemplo, símbolos bloqueados / desbloqueados junto al contenido protegido).-
Déclencheur:
preauthorizedResources()
devolución de llamada -
Punto de ejecución: después del flujo de autenticación completado
-
-
Si la autenticación se ha realizado correctamente, continúe con el Flujo de autorización.
F. Flujo de autorización authz_flow
-
Llame a getAuthorization() para iniciar el flujo de autorización.
- Dependencia: ResourceID válidos acordados con los MVPD.
- Los ID de recurso deben ser los mismos que se usan en cualquier otro dispositivo o plataforma, y serán los mismos en todas las MVPD. Para obtener información sobre los identificadores de recursos, consulte Identificación de recursos protegidos
-
Valide la autenticación y la autorización.
-
Si la llamada a getAuthorization() se realiza correctamente: El usuario tiene tokens AuthN y AuthZ válidos (el usuario está autenticado y autorizado para ver los medios solicitados).
-
Si getAuthorization() falla: Examine la excepción lanzada para determinar su tipo (AuthN, AuthZ o algo más):
- Si se ha producido un error de autenticación (AuthN), reinicie el flujo de autenticación.
- Si se trata de un error de autorización (AuthZ), el usuario no tiene autorización para ver los medios solicitados y se le debe mostrar algún tipo de mensaje de error.
- Si hubo algún otro tipo de error (error de conexión, error de red, etc.) a continuación, mostrar un mensaje de error apropiado al usuario.
-
-
Valide el token de medios corto.
Utilice la biblioteca del Comprobador de tokens de medios de autenticación de Adobe Pass para comprobar el token de medios de corta duración devuelto desde la llamada a getAuthorization() anterior:- Si la validación se realiza correctamente: Reproduzca el medio solicitado para el usuario.
- Si la validación falla: El token de AuthZ no era válido, la solicitud de medios debe rechazarse y se debe mostrar un mensaje de error al usuario.
-
Vuelva al flujo normal de aplicaciones.
G. Ver flujo de medios media_flow
-
El usuario selecciona los medios que desea ver.
-
¿Están protegidos los medios? La aplicación comprueba si los medios seleccionados están protegidos:
-
Si el medio seleccionado está protegido, su aplicación inicia el Flujo de autorización anterior.
-
Si el medio seleccionado no está protegido, reproduzca el medio durante
el usuario.
-
H. Flujo de cierre de sesión sin Apple SSO logout_flow_wo_AppleSSO
-
Llame a
logout()
para cerrar la sesión del usuario. AccessEnabler borra todos los valores y tokens almacenados en caché. Después de borrar la caché, AccessEnabler realiza una llamada al servidor para limpiar las sesiones del lado del servidor. Tenga en cuenta que, dado que la llamada al servidor podría provocar un redireccionamiento de SAML al IdP (esto permite la limpieza de la sesión en el lado del IdP), esta llamada debe seguir todas las redirecciones. Por este motivo, esta llamada debe gestionarse dentro de un controlador UIWebView/WKWebView o SFSafariViewController.a. Siguiendo el mismo patrón que el flujo de trabajo de autenticación, el dominio AccessEnabler realiza una solicitud a la capa de aplicación de la interfaz de usuario, a través de la llamada de retorno
navigateToUrl:
onavigateToUrl:useSVC:
, para crear un controlador UIWebView/WKWebView o SFSafariViewController e indicar a que cargue la dirección URL proporcionada en el parámetrourl
de la llamada de retorno. Dirección URL del extremo de cierre de sesión en el servidor back-end.b. La aplicación debe supervisar la actividad del controlador
UIWebView/WKWebView or SFSafariViewController
y detectar el momento en que carga una dirección URL personalizada específica, a medida que pasa por varias redirecciones. Tenga en cuenta que esta dirección URL personalizada específica no es válida y no está pensada para que el controlador la cargue. Solo su aplicación debe interpretarlo como una señal de que el flujo de cierre de sesión se ha completado y de que es seguro cerrar el controladorUIWebView/WKWebView
oSFSafariViewController
. Cuando el controlador carga esta dirección URL personalizada específica, la aplicación debe cerrar el controladorUIWebView/WKWebView or SFSafariViewController
y llamar al método de APIhandleExternalURL:url
de AccessEnabler. En caso de que se requiera el uso de un controladorSFSafariViewController
, la dirección URL personalizada específica está definida porapplication's custom scheme
(por ejemplo,adbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com
); de lo contrario, esta dirección URL personalizada específica está definida por la constanteADOBEPASS_REDIRECT_URL
(es decir,adobepass://ios.app
).note note NOTE El flujo de cierre de sesión difiere del flujo de autenticación en que el usuario no tiene que interactuar con UIWebView/WKWebView o SFSafariViewController de ninguna manera. La capa de aplicación de la interfaz de usuario utiliza un UIWebView/WKWebView o SFSafariViewController para asegurarse de que se siguen todas las redirecciones. Por lo tanto, es posible (y recomendado) hacer que el controlador sea invisible (es decir, oculto) durante el proceso de cierre de sesión.