Amazon FireOS SSO à l’aide du guide pas à pas API client amazon-fireos-sso-using-clientless-api-cookbook
Introduction Introduction
Ce document fournit des instructions pour mettre en oeuvre la version SSO d’Amazon du flux d’authentification Adobe Primetime à l’aide de l’API sans client. La première partie de ce document se concentre sur la spécificité de la version Amazon de l’architecture, pour les nombreux partenaires déjà familiarisés et expérimentés avec sa mise en oeuvre.
La deuxième partie du document décrit les principales étapes de mise en oeuvre de l’API sans client d’authentification Adobe Primetime.
Pour une présentation technique générale du fonctionnement de la solution sans client, voir la section Présentation de l’API REST. Adobe est le contact préféré pour la prise en charge de l’architecture globale et des premières implémentations.
SSO sans client Amazon AMZ-Clientless-SSO
Architecture de haut niveau High-Level-Arch
L’implémentation d’authentification unique sans client Amazon est simple et presque identique aux API sans client standard d’authentification Adobe Primetime.
Vous devrez utiliser le SDK Amazon pour récupérer une payload personnalisée et l’utiliser lors de l’appel d’API sans client Adobe.
Si la charge utile est reconnue et correspond à une session authentifiée, les API sans client renvoient immédiatement le jeton de votre session.
Comment créer l’application pour utiliser le SDK Amazon Build-entries
-
Téléchargez et copiez la dernière version SDK Amazon Stub dans un dossier /SSOEnabler parallèlement au répertoire de l’application.
-
Mettez à jour les fichiers manifest/gradle pour utiliser la bibliothèque :
Ajoutez la ligne suivante à votre fichier de manifeste :
code language-java <uses-library android:name="com.amazon.ottssotokenlib" android:required="false"/\>Entrées de fichier Gradle :
Sous Référentiels :
code language-java flatDir { dirs '../SSOEnabler' }Sous dependencies, ajoutez :
code language-java provided fileTree(include: \['ottSSOTokenStub.jar'\], dir: '../SSOEnabler') -
Gestion de l’absence de l’application compagnon Amazon :
Bien qu’il soit peu probable que le compagnon ne soit pas présent sur le périphérique Amazon que votre application est en cours d’exécution, vous devez rencontrer une exception ClassNotFoundException au moment de l’exécution sur la classe suivante :
com.amazon.ottssotokenlib.SSOEnabler.Si cela se produit, il vous suffit d’ignorer l’étape de payload et de revenir au flux PrimeTime normal. SSO ne sera pas activé, mais le flux d’authentification standard se produira normalement.
Comment obtenir la payload SSO Amazon à l’aide du SDK Amazon UseAmazonSSO
Lors de l’initialisation de votre application, obtenez une instance de SSOEnabler. En fonction de l’architecture de votre application, vous devez choisir entre une mise en oeuvre synchrone ou asynchrone.
Si, pour une raison quelconque, les appels d’API ne renvoient pas de payload, utilisez le flux non SSO normal et contactez vos partenaires Amazon et Adobe pour enquêter.
API asynchrone
-
Obtenez l’instance SSO Enabler :
code language-java ssoEnabler = SSOEnabler.getInstance(context); SSOEnablerCallback ssoEnablerCallback = new SSOEnablerCallbackImpl(); ssoEnabler.setSSOTokenCallback(ssoEnablerCallback); -
Définition du rappel
code language-java public static abstract class SSOEnablerCallback { public abstract void getSSOTokenSuccess(Bundle result); public abstract void getSSOTokenFailure(Bundle result); }-
Le lot de réponse de succès contiendra :
- Jeton SSO sous forme de chaîne avec la clé "SSOToken"
-
Le lot de réponse à l’échec contient :
- code d’erreur en tant qu’entier avec la clé "ErrorCode"
- description de l’erreur en tant que chaîne avec la clé "ErrorDescription"
-
-
Obtention du jeton SSO
code language-java Bundle getSSOTokenAsync(Void); -
Cette API fournira la réponse via le jeu de rappel lors de l’initialisation.
Ex. appel à l’aide de l’instance singleton créée pendant init :
code language-java ssoEnabler.getSSOTokenAsync().
API synchrones
-
Obtention de l’instance SSO Enabler et définition du rappel
code language-java ssoEnabler = SSOEnabler.getInstance(context);</span> -
Obtention du jeton SSO
code language-java Bundle getSSOTokenSync(Void);- Cette API bloquera le thread appelant et répondra avec le lot de résultats. Comme il s’agit d’un appel synchrone, veillez à ne pas l’utiliser dans votre thread principal.
code language-java void setSSOTokenTimeout(long);- Valeur en millisecondes. si cette valeur est définie, remplacez la valeur du délai d’expiration par défaut de 1 minute pour l’API de synchronisation.
Mise à jour de l’API sans client Adobe Primetime pour utiliser l’enregistrement client dynamique clientlessdcr
S’il s’agit de votre première mise en oeuvre, reportez-vous à la section Présentation technique sans client et contactez l’Adobe si vous avez besoin d’assistance.
L’API sans client Adobe exige que les applications utilisent l’enregistrement client dynamique pour effectuer des appels vers les serveurs Adobe.
-
Pour utiliser l’enregistrement de client dynamique dans votre application, suivez les instructions de la section Dynamic Client Registration Management pour enregistrer l’application.
-
Pour mettre en oeuvre l’API d’enregistrement du client dynamique afin d’effectuer des demandes d’authentification et d’autorisation sur les serveurs Adobe Primetime, suivez les instructions de la section API d’enregistrement de client dynamique .
Mise à jour de l’API sans client d’Adobe Primetime pour utiliser la fonction SSO d’Amazon clientlesssso
La charge utile Amazon SSO obtenue à partir du SDK Amazon doit être présente sur les demandes effectuées aux points de terminaison d’authentification Adobe Primetime :
/adobe-services/*
/reggie/*
/api/*
Tous les points de terminaison d’authentification Primetime prennent en charge les méthodes suivantes pour recevoir l’identifiant de la portée de l’appareil ou l’identifiant de la portée de la plate-forme (présent dans la payload SSO Amazon) :
- En-tête : "Adobe-Objet-Jeton"
- En tant que paramètre de requête : "ast"
- En tant que paramètre de publication : "ast"
Exemples :
Envoi en tant qu’en-tête personnalisé
GET /adobe-services/config/requestor HTTP/1.1 Host: sp-preprod.auth.adobe.com
Adobe-Subject-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJyb2t1IiwiaWF0IjoxNTExMzY4ODAyLCJleHAiOjE1NDI5MDQ4MDIsImF1ZCI6ImFkb2JlIiwic3ViIjoiNWZjYzMwODctYWJmZi00OGU4LWJhZTgtODQzODViZTFkMzQwIiwiZGlkIjoiY2FmZjQ1ZDAtM2NhMy00MDg3LWI2MjMtNjFkZjNhMmNlOWM4In0.JlBFhNhNCJCDXLwBjy5tt3PtPcqbMKEIGZ6sr2NA
Envoi en tant que paramètre de requête
GET /adobe-services/config/requestor?ast=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJyb2t1IiwiaWF0IjoxNTExMzY4ODAyLCJleHAiOjE1NDI5MDQ4MDIsImF1ZCI6ImFkb2JlIiwic3ViIjoiNWZjYzMwODctYWJmZi00OGU4LWJhZTgtODQzODViZTFkMzQwIiwiZGlkIjoiY2FmZjQ1ZDAtM2NhMy00MDg3LWI2MjMtNjFkZjNhMmNlOWM4In0.JlBFhNhNCJCDXLwBjy5tt3PtPcqbMKEIGZ6sr2NA
HTTP/1.1
Host: sp.auth.adobe.com
Envoi en tant que paramètre de publication
POST /adobe-services/config/requestor?ast=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJyb2t1IiwiaWF0IjoxNTExMzY4ODAyLCJleHAiOjE1NDI5MDQ4MDIsImF1ZCI6ImFkb2JlIiwic3ViIjoiNWZjYzMwODctYWJmZi00OGU4LWJhZTgtODQzODViZTFkMzQwIiwiZGlkIjoiY2FmZjQ1ZDAtM2NhMy00MDg3LWI2MjMtNjFkZjNhMmNlOWM4In0.Jl\_BFhN\_h\_NCJCDXLwBjy5tt3PtPcqbMKEIGZ6sr2NA
HTTP/1.1
Host: sp.auth.adobe.com Content-Type: multipart/form-data;
boundary=---- WebKitFormBoundary7MA4YWxkTrZu0gW