(Äldre) Android SDK Cookbook android-sdk-cookbook
Introduktion intro
I det här dokumentet beskrivs de tillståndsarbetsflöden som kan implementeras av en programmerares program på den översta nivån via de API:er som exponeras av Android AccessEnabler-biblioteket.
Adobe Pass Authentication-berättigandelösningen för Android är uppdelad i två domäner:
-
Användargränssnittets domän - det här är det övre programlagret som implementerar användargränssnittet och använder tjänsterna som tillhandahålls av AccessEnabler-biblioteket för att ge åtkomst till begränsat innehåll.
-
Domänen AccessEnabler - det är här som berättigandearbetsflödena implementeras i form av:
- Nätverksanrop till Adobe serverdelsservrar
- Affärslogik för arbetsflödena för autentisering och auktorisering
- Hantering av olika resurser och bearbetning av arbetsflödestillstånd (t.ex. tokencache)
Målet med AccessEnabler-domänen är att dölja alla komplexa berättigandearbetsflöden och ge programmet i det övre lagret (via AccessEnabler-biblioteket) en uppsättning enkla berättigandeprinciper som du använder för berättigandearbetsflöden:
-
Ange identiteten för begärande.
-
Kontrollera och hämta autentisering mot en viss identitetsleverantör.
-
Kontrollera och få behörighet för en viss resurs.
-
Logga ut.
Nätverksaktiviteten för AccessEnabler sker i en annan tråd så att gränssnittstråden aldrig blockeras. Det innebär att den tvåvägskommunikationskanal som finns mellan de två programdomänerna måste följa ett fullständigt asynkront mönster:
- Gränssnittets programlager skickar meddelanden till AccessEnabler-domänen via API-anropen som visas av AccessEnabler-biblioteket.
- AccessEnabler svarar på UI-lagret via callback-metoderna i protokollet AccessEnabler som UI-lagret registreras med AccessEnabler-biblioteket.
Tillståndsflöden entitlement
A. Förutsättningar prereqs
-
Skapa callback-funktioner:
-
Utlöses av
setRequestor()och returnerar om åtgärden lyckades eller misslyckades.
Slutfört visar att du kan fortsätta med berättigandeanrop. -
Utlöses endast av
getAuthentication()om användaren inte har valt någon leverantör (MVPD) och ännu inte är autentiserad.
Parameternmvpdsär en matris med providers som är tillgängliga för användaren. -
setAuthenticationStatus(status, felkod)Utlöses av
checkAuthentication()varje gång.
Utlöses endast avgetAuthentication()om användaren redan är autentiserad och har valt en leverantör.Status som returneras är lyckad eller misslyckad. Felkoden beskriver typen av fel.
-
Utlöses av
getAuthentication()efter att användaren har valt en MVPD. Parameternurlanger platsen för MVPD inloggningssida. -
Utlöses av
checkAuthentication(), getAuthentication(), checkAuthorization(), getAuthorization(), setSelectedProvider().
Parameterneventanger vilken berättigandehändelse som inträffade. Parameterndataär en lista med värden som relaterar till händelsen. -
Utlöses av
checkAuthorization()ochgetAuthorization()efter en auktorisering för att visa en resurs.
Parameterntokenär den kortlivade medietoken. Parameternresourceär det innehåll som användaren har behörighet att visa. -
tokenRequestFailed(resource, code, description)Utlöses av
checkAuthorization()ochgetAuthorization()efter en misslyckad auktorisering.
Parameternresourceär det innehåll som användaren försökte visa. Parameterncodeär felkoden som anger vilken typ av fel som uppstod. Parameterndescriptionbeskriver felet som är associerat med felkoden. -
Utlöses av
getSelectedProvider().
Parameternmvpdger information om providern som valts av användaren. -
setMetadataStatus(metadata, nyckel, argument)Utlöses av
getMetadata().
Parameternmetadatainnehåller de specifika data som du har begärt, parameternkeyär nyckeln som används i begärangetMetadata()och parameternargumentsär samma ordlista som skickades tillgetMetadata(). -
"preauthorizedResources(resources)`
Utlöses av
checkPreauthorizedResources().
ParameternauthorizedResourcesvisar de resurser som användaren har behörighet att visa.
-
B. Startflöde startup_flow
-
Starta programmet på den översta nivån.
-
Initiera Adobe Pass-autentisering
a. Anropa
getInstanceför att skapa en enda instans av Adobe Pass Authentication AccessEnabler.- Beroende: Inbyggt Adobe Pass-autentisering
Android Library (AccessEnabler)
b. Anropa
setRequestor()för att upprätta identifieringen av programmeraren; skicka en matris med Adobe Pass Authentication-slutpunkter i programmerarensrequestorIDoch (eventuellt).-
Beroende: Giltigt begärande-ID för Adobe Pass-autentisering
(Samarbeta med kontohanteraren för Adobe Pass-autentisering för att ordna detta.) -
Utlösare: setRequestorComplete()-återanrop
table 0-row-2 1-row-2 ANMÄRKNING Inga berättigandebegäranden kan slutföras förrän identiteten för den som gjorde begäran har etablerats fullständigt. Detta innebär att när setRequestor() fortfarande körs blockeras alla efterföljande berättigandebegäranden (till exempel checkAuthentication()).
Du har två implementeringsalternativ: När begärarens identifieringsinformation har skickats till backend-servern kan gränssnittets programlager välja en av följande två metoder:
1. Vänta på att återanropetsetRequestorComplete()aktiveras (ingår i AccessEnabler-delegaten). Det här alternativet ger den största säkerheten för attsetRequestor()har slutförts, så det rekommenderas för de flesta implementeringar.
2. Fortsätt utan att vänta på att återanropetsetRequestorComplete()ska utlösas och börja utfärda tillståndsbegäranden. Dessa anrop (checkAuthentication, checkAuthorization, getAuthentication, getAuthorization, checkPreauthorizedResource, getMetadata, logout) köas av AccessEnabler-biblioteket, vilket gör att de faktiska nätverksanropen eftersetRequestor().Det här alternativet kan avbrytas ibland om nätverksanslutningen till exempel är instabil. - Beroende: Inbyggt Adobe Pass-autentisering
-
Anropa checkAuthentication() om du vill söka efter en befintlig autentisering utan att initiera det fullständiga autentiseringsflödet. Om samtalet lyckas kan du gå direkt till auktoriseringsflödet. Om inte, fortsätter du till autentiseringsflödet.
-
Beroende: Ett lyckat anrop till
setRequestor()(det här beroendet gäller även för alla efterföljande anrop). -
Utlösare: setAuthenticationStatus() återanrop
-
C. Autentiseringsflöde authn_flow
-
Ring
getAuthentication()för att initiera autentiseringsflödet eller för att få en bekräftelse på att användaren redan är autentiserad.
Utlösare:- Callback-funktionen setAuthenticationStatus(), om användaren redan är autentiserad. I det här fallet går du direkt till auktoriseringsflödet.
- Callback-funktionen displayProviderDialog(), om användaren inte har autentiserats ännu.
-
Presentera användaren med listan över leverantörer som skickats till
displayProviderDialog(). -
När användaren har valt en provider hämtar du URL:en för användarens MVPD från
navigateToUrl()-återanropet. Öppna en WebView och dirigera WebView-kontrollen till URL:en. -
Via den WebView-vy som skapades i det föregående steget markeras användaren på MVPD inloggningssida och inloggningsuppgifter. Flera omdirigeringsåtgärder utförs i WebView.
Obs! Nu har användaren möjlighet att avbryta autentiseringsflödet. Om detta inträffar ansvarar ditt UI-lager för att informera AccessEnabler om den här händelsen genom att anropa
setSelectedProvider()mednullsom en parameter. Detta gör att AccessEnabler kan rensa upp dess interna tillstånd och återställa autentiseringsflödet. -
Vid en lyckad inloggning från användaren upptäcker programlagret inläsningen av en "anpassad omdirigerings-URL" (dvs.:
http://adobepass.android.app). Den här anpassade URL:en är en ogiltig URL som inte ska läsas in av WebView. Det är en signal om att autentiseringsflödet har slutförts och att WebView måste stängas. -
Stäng WebView-kontrollen och anropa
getAuthenticationToken(), som instruerar AccessEnabler att hämta autentiseringstoken från serverdelen. -
[Valfritt] samtal
checkPreauthorizedResources(resources)för att kontrollera vilka resurser användaren har behörighet att visa. Parameternresourcesär en matris med skyddade resurser som är associerad med användarens autentiseringstoken.
Utlösare:preAuthorizedResources()återanrop
Körningspunkt: Efter det slutförda autentiseringsflödet -
Om autentiseringen lyckades fortsätter du till auktoriseringsflödet.
D. Auktoriseringsflöde authz_flow
-
Anropa getAuthorization() för att initiera auktoriseringen
flöde.Beroende: Giltiga resurs-ID:n som avtalats med MVPD(n).
Obs! Resurs-ID:n ska vara samma som de som används på andra enheter eller plattformar och ska vara samma för alla flerkanalsprogram.
-
Validera autentisering och auktorisering.
-
Om anropet
getAuthorization()lyckas: Användaren har giltiga AuthN- och AuthZ-tokens (användaren är autentiserad och har behörighet att titta på det begärda mediet). -
Om
getAuthorization()misslyckas: Undersök undantaget som utlösts för att fastställa dess typ (AuthN, AuthZ eller något annat):- Om det var ett autentiseringsfel (AuthN) startar du om autentiseringsflödet.
- Om det var ett auktoriseringsfel (AuthZ) har användaren inte behörighet att titta på det begärda mediet och någon typ av felmeddelande ska visas för användaren.
- Om det finns någon annan typ av fel (anslutningsfel, nätverksfel osv.) visar du ett felmeddelande för användaren.
-
-
Validera den korta medietoken.
Använd Adobe Pass Authentication Media Token Verifier-biblioteket för att verifiera den kortlivade medietoken som returnerats frångetAuthorization()-anropet ovan:- Om valideringen lyckas: Spela upp det begärda mediet för användaren.
- Om valideringen misslyckas: AuthZ-token var ogiltig, ska mediebegäran avvisas och ett felmeddelande ska visas för användaren.
-
Återgå till det normala programflödet.
E. Visa medieflöde media_flow
- Användaren väljer de media som ska visas.
- Är mediet skyddat? Programmet kontrollerar om det valda mediet är skyddat:
- Om det valda mediet är skyddat startar programmet auktoriseringsflödet ovan.
- Om det valda mediet inte är skyddat kan du spela upp mediet för användaren.
F. Utloggningsflöde logout_flow
-
Ring
logout()för att logga ut användaren.
AccessEnabler rensar bort alla cachelagrade värden och token för den aktuella MVPD-begäran och även för beställare med enkel inloggning. När cacheminnet har rensats gör AccessEnabler ett serveranrop för att rensa sessionerna på serversidan. Observera, att eftersom serveranropet kan resultera i en SAML-omdirigering till IdP (detta tillåter sessionsrensning på IdP-sidan), måste det här anropet följa alla omdirigeringar. Därför måste anropet hanteras i en WebView-kontroll.a. I samma mönster som autentiseringsarbetsflödet gör AccessEnabler-domänen en en begäran till gränssnittets programlager (via
navigateToUrl()-återanropet) om att skapa en WebView-kontroll och instruera den kontrollen att läsa in URL:en för utloggningsslutpunkten på serverdelen.b. Återigen måste gränssnittet övervaka WebView-kontrollens aktivitet och upptäcka när kontrollen, när den går igenom flera omdirigeringar, läser in programmets anpassade URL (d.v.s.:
http://adobepass.android.app/). När den här händelsen inträffar stänger gränssnittets programlager WebView och utloggningsprocessen är klar.Obs! Loggoutflödet skiljer sig från autentiseringsflödet på så sätt att användaren inte behöver interagera med WebView på något sätt. Gränssnittets programlager använder en WebView för att se till att alla omdirigeringar följs. Det är därför möjligt (och rekommenderas) att göra WebView-kontrollen osynlig (dvs. dold) under utloggningsprocessen.
Användarflöden för inloggning med flera MVPD och Logout user_flows
Här har du ett dokument som beskriver beteendet när du använder flera PDF-filer och vad som händer när användaren loggar ut från ett program.
Det beskrivna beteendet är tillgängligt när du använder Android SDK version >= 2.0.0.