iOS/tvOS SDK Cookbook iostvos-sdk-cookbook
Inleiding intro
In dit document worden de machtigingsworkflows beschreven die de toepassing op hoofdniveau van een programmeur kan implementeren via de API's die worden weergegeven door de iOS/tvOS AccessEnabler-bibliotheek.
De Adobe Pass-verificatieoplossing voor iOS/tvOS bestaat uiteindelijk uit twee domeinen:
-
Het domein UI - dit is de bovenste toepassingslaag die UI uitvoert en de diensten gebruikt die door de bibliotheek AccessEnabler worden verleend om toegang tot beperkte inhoud te verlenen.
-
Het domein AccessEnabler - dit is waar de machtigingswerkschema's in de vorm van worden uitgevoerd:
- De vraag van het netwerk die aan de backendservers van de Adobe wordt gemaakt
- Zakelijke en logische regels met betrekking tot de workflows voor verificatie en autorisatie
- Beheer van diverse bronnen en verwerking van workflowstatus (zoals de tokencache)
Het doel van het domein AccessEnabler is alle ingewikkeldheid van de machtigingswerkschema's te verbergen, en aan de hogere laagtoepassing (door de bibliotheek AccessEnabler) een reeks eenvoudige machtigingsprimitieven te verstrekken waarmee u de machtigingswerkschema's uitvoert:
- De identiteit van de aanvrager instellen
- Verificatie aanvragen bij een bepaalde identiteitsprovider
- Autorisatie voor een bepaalde bron controleren en ophalen
- Afmelden
- SSO van Apple stroomt door het VSA-kader van Apple te verfijnen
De het netwerkactiviteit van AccessEnabler vindt plaats in zijn eigen draad, zodat wordt de draad UI nooit geblokkeerd. Het communicatiekanaal in twee richtingen tussen de twee toepassingsdomeinen moet daarom een volledig asynchroon patroon volgen:
- De toepassingslaag UI verzendt berichten naar het domein AccessEnabler via de API vraag die door de bibliotheek AccessEnabler wordt blootgesteld.
- AccessEnabler antwoordt aan de laag UI door de callback methodes inbegrepen in het protocol AccessEnabler dat de laag UI met de bibliotheek AccessEnabler registreert.
De service voor Experience Cloud-id configureren (bezoeker-id) visitorIDSetup
Het vormen van Experience Cloud-id waarde is belangrijk vanuit de Analytics standpunt. Eenmaal visitorID
waarde wordt geplaatst, verzendt SDK deze informatie samen met elke netwerkvraag en Adobe Pass Deze gegevens worden verzameld door de verificatieserver. U kunt de analyses van de Adobe Pass Authentication-service koppelen aan andere analytische rapporten die u hebt van andere toepassingen of websites. Informatie over het instellen van bezoekerID vindt u hier.
Machtigingsstromen entitlement
A. Vereisten
B. Stroom opstarten
C. Verificatiestroom met Apple SSO
D. Verificatiestroom met Apple SSO op iOS
E. Verificatiestroom met Apple SSO op tvOS
F. Autorisatiestroom
G. Media-stroom weergeven
H. Afmeldingsstroom zonder Apple SSO
I. Afmeldingsstroom met Apple SSO
A. Vereisten prereqs
-
Maak uw callback-functies:
-
setRequestorComplete()
-
geactiveerd door setRequestor(), geeft succes of mislukking.
-
Het succes wijst erop u met machtigingsvraag kunt te werk gaan.
-
- geactiveerd door
getAuthentication()
alleen als de gebruiker geen provider (MVPD) heeft geselecteerd en nog niet is geverifieerd. - De
mvpds
parameter is een array van providers die beschikbaar zijn voor de gebruiker.
- geactiveerd door
-
setAuthenticationStatus(status, errorcode)
- geactiveerd door
checkAuthentication()
elke keer. - geactiveerd door
getAuthentication()
alleen als de gebruiker al is geverifieerd en een provider heeft geselecteerd. - De geretourneerde status is geslaagd of mislukt. De foutcode beschrijft het type fout.
- geactiveerd door
-
- geactiveerd door
getAuthentication()
nadat de gebruiker een MVPD selecteert. Deurl
parameter verstrekt de plaats van de MVPD login pagina.
- geactiveerd door
-
sendTrackingData(event, data)
- geactiveerd door
checkAuthentication()
,getAuthentication()
,checkAuthorization()
,getAuthorization()
,setSelectedProvider()
. - De
event
parameter geeft aan welke machtigingsgebeurtenis heeft plaatsgevonden; dedata
parameter is een lijst van waarden met betrekking tot de gebeurtenis.
- geactiveerd door
-
setToken(token, resource)
- geactiveerd door checkAuthorization() en getAuthorization() na een geslaagde machtiging om een bron te bekijken.
- De
token
parameter is het kortstondige media token; deresource
parameter is de inhoud die de gebruiker mag bekijken.
-
tokenRequestFailed(resource, code, description)
- geactiveerd door checkAuthorization() en getAuthorization() na een niet-succesvolle toelating.
- De
resource
parameter is de inhoud die de gebruiker probeerde te bekijken; decode
parameter is de foutcode die aangeeft welk type fout is opgetreden; dedescription
parameter beschrijft de fout die aan de foutencode wordt geassocieerd.
-
selectedProvider(mvpd)
- geactiveerd door
getSelectedProvider()
. - De
mvpd
parameter geeft informatie over de provider die door de gebruiker is geselecteerd.
- geactiveerd door
-
setMetadataStatus(metadata, key, arguments)
- geactiveerd door
getMetadata().
- De
metadata
parameter bevat de specifieke gegevens die u hebt aangevraagd; dekey
parameter is de sleutel die wordt gebruikt in de getMetadata() en dearguments
parameter is hetzelfde woordenboek als dat waaraan is doorgegeven getMetadata().
- geactiveerd door
-
"preauthorisedResources(authorisedResources)"
-
geactiveerd door
checkPreauthorizedResources()
. -
De
authorizedResources
parameter geeft de bronnen weer die de gebruiker mag bekijken.
-
-
presentTvProviderDialog(viewController)
- geactiveerd door getAuthentication() wanneer de huidige aanvrager minstens op MVPD steunt die steun SSO heeft.
- De parameter viewController is de dialoog van Apple SSO en moet op het belangrijkste meningscontrolemechanisme worden voorgesteld.
-
dismissTvProviderDialog(viewController)
- Wordt geactiveerd door een gebruikershandeling (door "Annuleren" of "Andere tv-providers" te selecteren in het dialoogvenster Apple SSO).
- De viewController parameter is de Dialoog van Apple SSO en moet van het belangrijkste meningscontrolemechanisme worden verworpen.
-
B. Startstroom startup_flow
-
Start de toepassing op het hoogste niveau.
-
Adobe Pass-verificatie starten
a. Bellen
init
om één enkel geval van de Authentificatie AccessEnabler van Adobe Pass te creëren.- Afhankelijkheid: Adobe Pass Authentication Native iOS/tvOS Library (AccessEnabler)
b. Oproep
setRequestor()
om de identiteit van de programmeur vast te stellen;requestorID
en (optioneel) een array met eindpunten voor Adobe Pass-verificatie. Voor tvOS zult u ook de openbare sleutel en het geheim moeten verstrekken. Zie Clientloze documentatie voor meer informatie.-
Afhankelijkheid: Geldige Adobe Pass-verificatieaanvraag-id (werk dit samen met uw Adobe Pass-verificatieaccountmanager).
-
Triggers:
setRequestorComplete() callback.
note note NOTE Er kunnen geen aanvragen voor een machtiging worden ingevuld totdat de identiteit van de aanvrager volledig is vastgesteld. Dit betekent in feite dat setRequestor()
nog steeds actief is, alle volgende aanvragen voor machtigingen. Bijvoorbeeld:checkAuthentication()
zijn geblokkeerd.U hebt twee implementatieopties: wanneer de informatie van de aanvrager-identificatie naar de back-endserver is verzonden, kan de UI-toepassingslaag een van de volgende twee methoden kiezen:
-
Wacht op het in werking stellen van
setRequestorComplete()
callback (deel van de afgevaardigde AccessEnabler). Deze optie biedt de meeste zekerheid datsetRequestor()
voltooid, dus wordt het aanbevolen voor de meeste implementaties. -
Doorgaan zonder te wachten op de activering van de
setRequestorComplete()
callback en begin met het afgeven van aanvragen voor machtigingen. Deze vraag (checkAuthentication, checkAuthorization, getAuthentication, getAuthorization, checkPreauthorisedResource, getMetadata, logout) wordt een rij gevormd door de bibliotheek AccessEnabler, die de daadwerkelijke netwerkvraag na hetsetRequestor()
. Deze optie kan af en toe worden onderbroken als, bijvoorbeeld, de netwerkverbinding instabiel is.
-
Bellen
checkAuthentication()
om op een bestaande authentificatie te controleren zonder de volledige stroom van de Authentificatie in werking te stellen. Als deze vraag slaagt, kunt u aan de stroom van de Vergunning direct te werk gaan. Zo niet, ga dan door naar de verificatiestroom.-
Afhankelijkheid: Een geslaagde oproep tot setRequestor() (dit gebiedsdeel is ook op alle verdere vraag van toepassing).
-
Triggers: setAuthenticationStatus() callback.
-
C. Verificatiestroom zonder Apple SSO authn_flow_wo_applesso
-
Bellen
getAuthentication()
om de verificatiestroom te starten of om te bevestigen dat de gebruiker al is geverifieerd.Triggers:
-
De setAuthenticationStatus() callback, als de gebruiker reeds voor authentiek verklaard is. Ga in dit geval rechtstreeks door naar de Autorisatiestroom.
-
De displayProviderDialog() callback, als de gebruiker nog niet voor authentiek verklaard is.
-
-
De gebruiker de lijst met providers presenteren die is verzonden naar
displayProviderDialog()
. -
Nadat de gebruiker een leverancier selecteert, verkrijg URL van MVPD van de gebruiker van
navigateToUrl:
ofnavigateToUrl:useSVC:
callback en open eenUIWebView/WKWebView
ofSFSafariViewController
en stuurt die controller naar de URL. -
Via de
UIWebView/WKWebView
ofSFSafariViewController
die in de vorige stap is geïnstantieerd, landt de gebruiker op de aanmeldingspagina van de MVPD en voert de aanmeldingsgegevens in. Er vinden verschillende omleidingsbewerkingen plaats binnen de controller.
null
als parameter. Dit staat AccessEnabler toe om het interne staat op te schonen en de Stroom van de Authentificatie terug te stellen.-
Wanneer de gebruiker zich met succes heeft aangemeld, detecteert de toepassingslaag het laden van een specifieke aangepaste URL. Deze specifieke aangepaste URL is in feite ongeldig en is niet bestemd voor de controller om deze daadwerkelijk te laden. Het moet door uw toepassing slechts als signaal worden geïnterpreteerd dat de authentificatiestroom heeft voltooid en dat het veilig is om het
UIWebView/WKWebView
ofSFSafariViewController
controller. In geval van eenSFSafariViewController
controller moet worden gebruikt. De specifieke aangepaste URL wordt gedefinieerd door deapplication's custom scheme
(bijvoorbeeldadbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com
), anders wordt deze specifieke aangepaste URL gedefinieerd door deADOBEPASS_REDIRECT_URL
constant (d.w.z.adobepass://ios.app
). -
Sluit het UIWebView/WKWebView of SFSafariViewController controlemechanisme en vraag AccessEnabler
handleExternalURL:url
API methode, die AccessEnabler opdraagt om het authentificatietoken van de backendserver terug te winnen. -
(Facultatief) Vraag
checkPreauthorizedResources(resources)
om te controleren welke middelen de gebruiker wordt gemachtigd om te bekijken. Deresources
parameter is een array met beveiligde bronnen die is gekoppeld aan het verificatietoken van de gebruiker. U kunt onder andere de machtigingsinformatie van de MVPD van de gebruiker gebruiken om de gebruikersinterface te versieren (bijvoorbeeld vergrendelde/ontgrendelde symbolen naast beveiligde inhoud).- Triggers:
preauthorizedResources()
callback - Uitvoeringspunt: Na de voltooide verificatiestroom
- Triggers:
-
Ga door naar de machtigingsstroom als de verificatie is gelukt.
D. Verificatiestroom met Apple SSO op iOS authn_flow_with_applesso
-
Bellen
getAuthentication()
om de verificatiestroom te starten of om te bevestigen dat de gebruiker al is geverifieerd.
Triggers:- De presentTVProviderDialog() callback, als de gebruiker niet voor authentiek wordt verklaard en de huidige aanvrager minstens op MVPD heeft die SSO steunt. Als geen MVPDs SSO steunt, zal de klassieke authentificatiestroom worden gebruikt.
-
Nadat de gebruiker een leverancier selecteert zal de bibliotheek AccessEnabler een authentificatietoken van de informatie verkrijgen die door het kader van Apple VSA wordt verstrekt.
-
De setAuthenticationStatus() callback wordt geactiveerd. Op dit moment moet de gebruiker worden geverifieerd met Apple SSO.
-
[Optioneel] Bellen
checkPreauthorizedResources(resources)
om te controleren welke middelen de gebruiker wordt gemachtigd om te bekijken. Deresources
parameter is een array met beveiligde bronnen die is gekoppeld aan het verificatietoken van de gebruiker. U kunt onder andere de machtigingsinformatie van de MVPD van de gebruiker gebruiken om de gebruikersinterface te versieren (bijvoorbeeld vergrendelde/ontgrendelde symbolen naast beveiligde inhoud).- Triggers:
preauthorizedResources()
callback - Uitvoeringspunt: Na de voltooide verificatiestroom
- Triggers:
-
Ga door naar de machtigingsstroom als de verificatie is gelukt.
E. Verificatiestroom met Apple SSO op tvOS authn_flow_with_applesso_tvOS
-
Bellen
getAuthentication()
om de verificatiestroom te starten of om te bevestigen dat de gebruiker al is geverifieerd.
Triggers:- De
presentTvProviderDialog()
callback, als de gebruiker niet voor authentiek wordt verklaard en de huidige aanvrager minstens op MVPD heeft die SSO steunt. Als geen MVPDs SSO steunt, zal de klassieke authentificatiestroom worden gebruikt.
- De
-
Nadat de gebruiker een provider heeft geselecteerd,
status()
callback wordt aangeroepen. Er wordt een registratiecode opgegeven en de AccessEnabler-bibliotheek begint de server te pollen voor een geslaagde verificatie op het tweede scherm. -
Als de opgegeven registratiecode is gebruikt voor verificatie op het tweede scherm, wordt de instelling
setAuthenticatiosStatus()
callback wordt geactiveerd. Op dit moment moet de gebruiker worden geverifieerd met Apple SSO. -
[Optioneel] Bellen
checkPreauthorizedResources(resources)
om te controleren welke middelen de gebruiker wordt gemachtigd om te bekijken. Deresources
parameter is een array met beveiligde bronnen die is gekoppeld aan het verificatietoken van de gebruiker. U kunt onder andere de machtigingsinformatie van de MVPD van de gebruiker gebruiken om de gebruikersinterface te versieren (bijvoorbeeld vergrendelde/ontgrendelde symbolen naast beveiligde inhoud).-
Triggers:
preauthorizedResources()
callback -
Uitvoeringspunt: Na de voltooide verificatiestroom
-
-
Ga door naar de machtigingsstroom als de verificatie is gelukt.
F. Vergunningsstroom authz_flow
-
Bellen getAuthorization() de vergunningsstroom in gang te zetten.
- Afhankelijkheid: Geldige ResourceID(s) overeengekomen met de MVPD(s).
- Middel IDs zou het zelfde moeten zijn als die gebruikt op andere apparaten of platforms, en zal het zelfde over MVPDs zijn. Voor informatie over Middel IDs, zie Beveiligde bronnen identificeren
-
Verificatie en autorisatie valideren.
-
Als de getAuthorization() De vraag slaagt: De gebruiker heeft geldige tokens AuthN en AuthZ (de gebruiker wordt voor authentiek verklaard en gemachtigd om de gevraagde media te bekijken).
-
Indien getAuthorization() ontbreekt: Onderzoek de geworpen uitzondering om zijn type (AuthN, AuthZ, of iets anders) te bepalen:
- Als het een authentificatie (AuthN) fout was dan herstart de authentificatiestroom.
- Als het een autorisatiefout (AuthZ) was, dan is de gebruiker niet geautoriseerd om de gevraagde media te bekijken en een soort foutbericht zou aan de gebruiker moeten worden getoond.
- Als er een ander type fout is opgetreden (verbindingsfout, netwerkfout, enz.) geeft u vervolgens een geschikt foutbericht weer aan de gebruiker.
-
-
Valideer de token voor korte media.
Gebruik de Adobe Pass Authentication Media Token Verifier-bibliotheek om het kortstondige mediatoken te verifiëren dat door de getAuthorization() oproep hierboven:- Als de validatie is gelukt: de gevraagde media afspelen voor de gebruiker.
- Als de validatie mislukt: de AuthZ-token was ongeldig, wordt de mediaquery geweigerd en wordt een foutbericht weergegeven aan de gebruiker.
-
Ga terug naar de normale stroom van de toepassing.
G. Media-stroom weergeven media_flow
-
De gebruiker selecteert de media die u wilt weergeven.
-
Zijn de media beveiligd? Uw toepassing controleert of het geselecteerde medium is beveiligd:
-
Als de geselecteerde media is beveiligd, start uw toepassing de Autorisatiestroom hierboven.
-
Als het geselecteerde medium niet is beveiligd, speelt u de media voor de gebruiker af.
-
H. Logout Flow zonder Apple SSO logout_flow_wo_AppleSSO
-
Bellen
logout()
om de gebruiker af te melden. AccessEnabler ontruimt alle caching waarden en tekenen. Na het ontruimen van het geheime voorgeheugen, richt AccessEnabler een servervraag om de server-zijzittingen schoon te maken. Merk op dat aangezien de servervraag in SAML kon resulteren die aan IdP (dit staat voor de zittingsschoonmaak op de kant IdP toe) wordt omgeleid, deze vraag moet alle omleidingen volgen. Om deze reden, moet deze vraag binnen een controlemechanisme UIWebView/WKWebView of SFSafariViewController worden behandeld.a. Na het zelfde patroon zoals het authentificatiewerkschema, doet het domein AccessEnabler een verzoek aan de UI toepassingslaag, via
navigateToUrl:
ofnavigateToUrl:useSVC:
callback, om een controlemechanisme te creëren UIWebView/WKWebView of SFSafariViewController en die opdracht te geven om URL te laden die in callback wordt verstrekturl
parameter. Dit is URL van het logout eindpunt op de achtergrondserver.b. Uw toepassing moet de activiteit van de
UIWebView/WKWebView or SFSafariViewController
en detecteert het moment waarop een specifieke aangepaste URL wordt geladen, terwijl verschillende omleidingen worden doorlopen. Deze specifieke aangepaste URL is in feite ongeldig en is niet bestemd voor de controller om deze daadwerkelijk te laden. Deze mag alleen door uw toepassing worden geïnterpreteerd als een signaal dat de afmeldingsflow is voltooid en dat het veilig is om deUIWebView/WKWebView
ofSFSafariViewController
controller. Wanneer de controller deze specifieke aangepaste URL laadt, moet de toepassing het dialoogvensterUIWebView/WKWebView or SFSafariViewController
controlemechanisme en vraag AccessEnablerhandleExternalURL:url
API-methode. In geval van eenSFSafariViewController
controller moet worden gebruikt. De specifieke aangepaste URL wordt gedefinieerd door deapplication's custom scheme
(bijvoorbeeldadbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com
), anders wordt deze specifieke aangepaste URL gedefinieerd door deADOBEPASS_REDIRECT_URL
constant (d.w.z.adobepass://ios.app
).note note NOTE De logout stroom verschilt van de authentificatiestroom in die zin dat de gebruiker niet wordt vereist om met UIWebView/WKWebView of SFSafariViewController op om het even welke manier in wisselwerking te staan. De toepassingslaag UI gebruikt UIWebView/WKWebView of SFSafariViewController om ervoor te zorgen dat alle omleidingen worden gevolgd. Daarom is het mogelijk (en aanbevolen) om de controller tijdens het aflogproces onzichtbaar te maken (dat wil zeggen verborgen).