(Verouderd) Android SDK Cookbook android-sdk-cookbook
Inleiding intro
In dit document worden de workflows voor machtigingen beschreven die de toepassing op hoofdniveau van een programmeur kan implementeren via de API's die worden weergegeven door de Android AccessEnabler-bibliotheek.
De Adobe Pass-verificatieoplossing voor Android is uiteindelijk verdeeld in 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:
- Netwerkaanroepen naar Adobe-backendservers
- 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:
-
Stel de identiteit van de aanvrager in.
-
Controleer en krijg authentificatie tegen een bepaalde identiteitsleverancier.
-
Controleer en krijg vergunning voor een bepaalde bron.
-
Afmelden.
De het netwerkactiviteit van AccessEnabler vindt in een verschillende draad plaats 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.
Machtigingsstromen entitlement
A. Vereisten prereqs
-
Maak uw callback-functies:
-
Wordt geactiveerd door
setRequestor()en retourneert een geslaagde of mislukte bewerking.
Het succes wijst erop u met machtigingsvraag kunt te werk gaan. -
Wordt alleen geactiveerd door
getAuthentication()als de gebruiker geen provider (MVPD) heeft geselecteerd en nog niet is geverifieerd.
De parametermvpdsis een array van providers die beschikbaar zijn voor de gebruiker. -
setAuthenticationStatus(status, errorCode)`
Wordt telkens geactiveerd door
checkAuthentication().
Wordt alleen geactiveerd doorgetAuthentication()als de gebruiker al is geverifieerd en een provider heeft geselecteerd.De geretourneerde status is geslaagd of mislukt. De foutcode beschrijft het type fout.
-
Wordt geactiveerd door
getAuthentication()nadat de gebruiker een MVPD selecteert. De parameterurlbiedt de locatie van de MVPD-aanmeldingspagina. -
Wordt geactiveerd door
checkAuthentication(), getAuthentication(), checkAuthorization(), getAuthorization(), setSelectedProvider().
De parametereventgeeft aan welke gebeurtenis entitlement heeft plaatsgevonden. De parameterdatais een lijst met waarden die betrekking hebben op de gebeurtenis. -
Wordt geactiveerd door
checkAuthorization()engetAuthorization()nadat u een resource hebt bekeken.
De parametertokenis het kortstondige media-token; de parameterresourceis de inhoud die de gebruiker mag bekijken. -
tokenRequestFailed(resource, code, description)Wordt geactiveerd door
checkAuthorization()engetAuthorization()nadat de autorisatie is mislukt.
De parameterresourceis de inhoud die de gebruiker probeerde te bekijken. De parametercodeis de foutcode die aangeeft welk type fout is opgetreden. De parameterdescriptionbeschrijft de fout die aan de foutcode is gekoppeld. -
Wordt geactiveerd door
getSelectedProvider().
De parametermvpdbiedt informatie over de provider die door de gebruiker is geselecteerd. -
setMetadataStatus(metadata, key, arguments)geactiveerd door
getMetadata().
De parametermetadatabevat de specifieke gegevens die u hebt aangevraagd. De parameterkeyis de sleutel die wordt gebruikt in de aanvraaggetMetadata()en de parameterargumentsis hetzelfde woordenboek dat is doorgegeven aangetMetadata(). -
"preauthorisedResources(resources)"
Wordt geactiveerd door
checkPreauthorizedResources().
De parameterauthorizedResourcesgeeft de bronnen weer die de gebruiker mag bekijken.
-
B. Startstroom startup_flow
-
Start de toepassing op het hoogste niveau.
-
Adobe Pass-verificatie starten
a. Vraag
getInstanceaan om één instantie van Adobe Pass Authentication AccessEnabler te maken.- Afhankelijkheid: Eigen de Authentificatie van Adobe Pass
Android Library (AccessEnabler)
b. Vraag
setRequestor()om de identificatie van de Programmer te vestigen; ga in de 1} van de Programmer en (facultatief) een serie van de eindpunten van de Authentificatie van Adobe Pass over.requestorID-
Afhankelijkheid: Geldige VraagID van de Authentificatie van Adobe Pass
(Gebruik hiervoor Adobe Pass Authentication Account Manager.) -
Trekkers: setRequestorComplete () callback
table 0-row-2 1-row-2 OPMERKING 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 wordt uitgevoerd, alle volgende aanvragen voor machtigingen (bijvoorbeeld checkAuthentication()) worden geblokkeerd.
u hebt twee implementatieopties: Zodra de informatie van de verzoeksidentificatie wordt verzonden naar de achterste server, kan de toepassingslaag UI één van de twee volgende benaderingen kiezen:
1. Wacht op het teweegbrengen vansetRequestorComplete()callback (deel van de afgevaardigde AccessEnabler). Deze optie biedt de meeste zekerheid datsetRequestor()is voltooid en wordt daarom aangeraden voor de meeste implementaties.
2. Ga verder zonder te wachten op het activeren van de callback vansetRequestorComplete()en geef aanvragen voor machtigingen af. Deze vraag (checkAuthentication, checkAuthorization, getAuthentication, getAuthorization, checkPreauthorisedResource, getMetadata, logout) wordt een rij gevormd door de bibliotheek AccessEnabler, die de daadwerkelijke netwerkvraag nasetRequestor().zal maken Deze optie kan nu en dan worden onderbroken als bijvoorbeeld, de netwerkverbinding instabiel is. - Afhankelijkheid: Eigen de Authentificatie van Adobe Pass
-
Vraag checkAuthentication () om 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 succesvolle vraag aan
setRequestor()(dit gebiedsdeel is eveneens op alle verdere vraag van toepassing). -
Trekkers: setAuthenticationStatus () callback
-
C. Verificatiestroom authn_flow
-
Vraag
getAuthentication()om de authentificatiestroom in werking te stellen, of bevestiging te krijgen dat de gebruiker reeds voor authentiek verklaard is.
Trekkers:- De callback setAuthenticationStatus(), als de gebruiker al is geverifieerd. In dit geval, ga direct aan de Stroom van de Vergunning te werk.
- De callback displayProviderDialog(), als de gebruiker nog niet is geverifieerd.
-
Geef de gebruiker de lijst met providers weer die naar
displayProviderDialog()is verzonden. -
Nadat de gebruiker een provider selecteert, verkrijgt u de URL van de MVPD van de gebruiker via de callback van
navigateToUrl(). Open een WebView en richt die controle WebView aan URL. -
Via WebView die in de vorige stap wordt geconcretiseerd, landt de gebruiker op de MVPD login pagina en input login geloofsbrieven. Verscheidene omleidingsverrichtingen vinden binnen WebView plaats.
Nota: Op dit punt, heeft de gebruiker de kans om de authentificatiestroom te annuleren. Als dit voorkomt, is uw UI laag verantwoordelijk voor het informeren van AccessEnabler over deze gebeurtenis door
setSelectedProvider()metnullals parameter te roepen. 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 aangepaste omleidings-URL (d.w.z.:
http://adobepass.android.app). Deze aangepaste URL is in feite een ongeldige URL die niet is bedoeld voor het laden van de WebView. Het is een signaal dat de Stroom van de Authentificatie heeft voltooid, en dat WebView moet worden gesloten. -
Sluit de controle WebView en vraag
getAuthenticationToken(), die AccessEnabler opdraagt om het authentificatietoken van de backendserver terug te winnen. -
[ Facultatieve ] Vraag
checkPreauthorizedResources(resources)om te controleren welke middelen de gebruiker aan mening wordt gemachtigd. De parameterresourcesis een array met beveiligde bronnen die is gekoppeld aan het verificatietoken van de gebruiker.
Trekkers:preAuthorizedResources()callback
het punt van de Uitvoering: na de voltooide Stroom van de Authentificatie -
Ga door naar de machtigingsstroom als de verificatie is gelukt.
D. Vergunningsstroom authz_flow
-
Vraag getAuthorization () om de vergunning in werking te stellen
stroom.Afhankelijkheid: geldige ResourceID('s) overeengekomen met de MVPD(s).
Nota: ResourceIDs zou het zelfde moeten zijn als die gebruikt op andere apparaten of platforms, en zal het zelfde over MVPDs zijn.
-
Verificatie en autorisatie valideren.
-
Als de
getAuthorization()vraag slaagt: De gebruiker heeft geldige tokens AuthN en AuthZ (de gebruiker wordt voor authentiek verklaard en gemachtigd om de gevraagde media te bekijken). -
Als
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 een geschikt foutbericht weer voor 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 bovenstaandegetAuthorization()oproep wordt geretourneerd:- 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.
E. Mediastroom 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 beschermd is, begint uw toepassing de Stroom van de Vergunning hierboven.
- Als het geselecteerde medium niet is beveiligd, speelt u de media voor de gebruiker af.
F. Afmeldingsstroom logout_flow
-
Roep
logout()aan om de gebruiker af te melden.
AccessEnabler wist alle in het cachegeheugen opgeslagen waarden en tokens voor de huidige MVPD voor de huidige aanvrager en ook voor aanvragers met Single Sign On. 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 controle worden behandeld WebView.a. Na het zelfde patroon zoals het authentificatiewerkschema, doet het domein AccessEnabler een verzoek aan de UI toepassingslaag (via
navigateToUrl()callback) om tot een controle te leiden WebView en die controle op te dragen om URL van het logout eindpunt op de backendserver te laden.b. Opnieuw, moet UI de activiteit van de controle controleren WebView en het ogenblik ontdekken wanneer de controle, aangezien het door verscheidene omleidingen gaat, de douane URL van de toepassing laadt (d.w.z.:
http://adobepass.android.app/). Zodra deze gebeurtenis plaatsvindt, sluit de UI toepassingslaag WebView en het logout proces volledig is.Nota: de logout stroom verschilt van de authentificatiestroom in die zin dat de gebruiker niet wordt vereist om met WebView op om het even welke manier in wisselwerking te staan. De toepassingslaag UI gebruikt een WebView om ervoor te zorgen dat alle omleidingen worden gevolgd. Aldus is het mogelijk (en geadviseerd) om de controle WebView onzichtbaar (d.w.z. verborgen) tijdens het logout proces te maken.
Gebruikersstromen voor Login met veelvoudige MVPDs en Logout user_flows
hier u hebt een document beschrijvend het gedrag wanneer het gebruiken van veelvoudige MVPDs en wat gebeurt wanneer de gebruiker zich uit een toepassing afmeldt.
Het beschreven gedrag is beschikbaar als u Android SDK versie >= 2.0.0 gebruikt.