Tutoriel Passerelle AWS API – Étape 3
Étape 3 – Création de l’application
Au cours de cette étape, vous allez créer une application à page unique sans serveur en utilisant le cadre d’applications AngularJS, que vous déploierez à partir d’un groupe AWS S3 configuré pour fonctionner comme un site Web statique.
1. Configurez votre exemple d’application
Pour une application de démarrage simple, téléchargez un exemple de projet propre à ce tutoriel. Connectez-vous pour que vos identifiants Auth0 soient préconfigurés.
Copiez le contenu de ce projet de démarrage dans un dossier local nommé pets
, que vous utiliserez pour le reste de ce tutoriel. Dans ce dossier, mettez à jour auth0-variables.js
avec votre application Auth0 AUTH0_CLIENT_ID
et AUTH0_CLIENT_ID
(ces informations sont accessibles dans le Management Dashboard pour l’application en question).
Groupe AWS S3
Assurez-vous que vous avez créé le groupe AWS S3 configuré pour agir comme un site Web statique. Pendant le processus d’installation, copiez le contenu du dossier pets
dans votre groupe S3 pour fournir du contenu au site Web.
Si vous utilisez un groupe existant, vous pouvez déplacer les fichiers à l’aide de l'interface de ligne de commande AWS en exécutant la commande suivante.
aws s3 cp --recursive --acl "public-read" ./ s3://{yourBucket}/
Was this helpful?
Avant de poursuivre, assurez-vous de disposer d’au moins un utilisateur associé à votre connexion Nom d’utilisateur-Mot de passe-Authentification (ou à la connexion de la base de données liée à l’application que vous utilisez). Pour tirer pleinement parti des fonctionnalités de votre exemple d’application et de son intégration avec AWS, vous devrez vous assurer que cet utilisateur teste l’authentification et en obtienne l’accès.
Enfin, assurez-vous qu’Auth0 autorise l’authentification depuis votre site Web en fournissant l’URL dans le champ Origines autorisées sur la page de paramètres de votre application. L’URL de votre site Web ressemblera à ceci :
http://your-bucket.s3-website-us-east-1.amazonaws.com
Si vous ne savez pas quelle est votre URL, vous pouvez la trouver sous l’onglet Propriétés de votre groupe S3.
Avant d’aller plus loin, effectuez un test de connexion à votre application. Ouvrez http://your-bucket-domain/index.html
dans votre navigateur. Après vous être connecté, vous devriez voir une boîte d’alerte indiquant « getPets non implémenté » :
La page qui vous permet de visualiser les animaux de compagnie, s’affiche également.
Utiliser la délégation pour obtenir un jeton AWS
À ce stade, vous avez configuré l’authentification avec Auth0 et vous disposez d’un JWT OpenID. Voici la structure du répertoire pour le code généré :

Vous pouvez exploiter la fonctionnalité de délégation d’Auth0 pour obtenir un jeton d’accès AWS à partir du jeton d’identité Auth0. En arrière-plan, Auth0 authentifie votre jeton d’identité, puis utilise SAML en fonction du module complémentaire que vous avez configuré.
Mettez à jour pets/login/login.js
comme suit afin d’obtenir un jeton de délégation AWS à partir du jeton d’identité après une connexion réussie avec auth.signin
. Veuillez noter que tout utilisateur non connecté utilisant une connexion sociale est traité comme un administrateur. Plus tard, nous coderons un deuxième rôle et montrerons de meilleures façons d’appliquer la sélection de rôle.
auth.signin(params, function(profile, token) {
//Set user as admin if they did not use a social login.
profile.isAdmin = !profile.identities[0].isSocial;
store.set('profile', profile);
store.set('token', token);
// get delegation token from identity token.
var options = getOptionsForRole(profile.isAdmin, token);
// TODO: Step 3: Enable this section once you setup AWS delegation.
/*
auth.getToken(options)
.then(
function(delegation) {
store.set('awstoken', delegation.Credentials);
$location.path("/");
},
function(err) {
console.log('failed to acquire delegation token', err);
});
*/
// TODO: Step 3: Remove this redirect after you add the get token API.
$location.path("/");
}, function(error) {
console.log("There was an error logging in", error);
});
Was this helpful?
Modifier les chaînes role et principal
Pour modifier les chaînes role
et principal
(qui sont les deux dernières lignes de la déclaration if
contenue dans la fonction fournie), spécifiez les valeurs appropriées via Règles :
function (user, context, callback) {
if (context.clientID === 'CLIENT_ID' &&
context.protocol === 'delegation') {
// set AWS settings
context.addonConfiguration = context.addonConfiguration || {};
context.addonConfiguration.aws = context.addonConfiguration.aws || {};
context.addonConfiguration.aws.principal = 'arn:aws:iam::[omitted]:saml-provider/auth0-provider';
context.addonConfiguration.aws.role = 'arn:aws:iam::[omitted]:role/auth0-role';
}
callback(null, user, context);
}
Was this helpful?
Assurez-vous de mettre à jour les valeurs ARN role
et [principal]
avec celles de votre intégration.
Copiez les fichiers mis à jour dans votre groupe S3 pour votre site Web.
En option, vous pouvez définir un point d’arrêt dans le navigateur à store.set(’awstoken’, delegation.Credentials);
. Lorsque vous vous déconnectez et vous vous reconnectez, inspectez delegation.Credentials
quand vous arrivez au point d’arrêt. Vous constaterez des valeurs familières comme AccessKeyId et SecretAccessKey :
{
AccessKeyId: "ASIAJB...BNQ",
SecretAccessKey: "vS+b6...2Noav",
SessionToken: "AQoDYBqsivOV...DdQW0gsKr8rgU=",
Expiration: "2015-08-27T14:48:32.000Z"
}
Was this helpful?
Si ces valeurs n’apparaissent pas, vérifiez que le module complémentaire Amazon Web Services est activé dans l’onglet Modules complémentaires de votre application Auth0.
Afficher les animaux de compagnie avec le service API AWS
La première étape consiste à présenter les animaux de compagnie aux utilisateurs finaux.
Ajoutez le code API pour appeler votre API
Pour ajouter le code API permettant d’effectuer un appel à votre service, copiez le contenu de apiGateway-js-sdk.zip, que vous avez précédemment téléchargé, dans le répertoire pets
. Le contenu doit inclure :
apiClient.js
;dossier
lib
;README.md
.
Pour examiner le téléchargement, veuillez consulter Tutoriel sur la passerelle API AWS, deuxième partie.
Il existe déjà un fichier README.md
dans le répertoire pets
, vous devrez donc renommer l’un des fichiers afin de conserver les deux dans le même répertoire. Le fichier README.md
pour la passerelle API explique comment utiliser l’application API à partir de votre application Auth0.
Ouvrez le fichier index.html
situé à la racine de votre dossier pets
, pour ajouter tous les scripts répertoriés en haut du fichier readme de l’API à index.html
:
<!-- scripts for aws api gateway include after you create your package from aws for api gateway. -->
<script type="text/javascript" src="/docs/lib/axios/dist/axios.standalone.js"></script>
<script type="text/javascript" src="/docs/lib/CryptoJS/rollups/hmac-sha256.js"></script>
<script type="text/javascript" src="/docs/lib/CryptoJS/rollups/sha256.js"></script>
<script type="text/javascript" src="/docs/lib/CryptoJS/components/hmac.js"></script>
<script type="text/javascript" src="/docs/lib/CryptoJS/components/enc-base64.js"></script>
<script type="text/javascript" src="/docs/lib/moment/moment.js"></script>
<script type="text/javascript" src="/docs/lib/url-template/url-template.js"></script>
<script type="text/javascript" src="/docs/lib/apiGatewayCore/sigV4Client.js"></script>
<script type="text/javascript" src="/docs/lib/apiGatewayCore/apiGatewayClient.js"></script>
<script type="text/javascript" src="/docs/lib/apiGatewayCore/simpleHttpClient.js"></script>
<script type="text/javascript" src="/docs/lib/apiGatewayCore/utils.js"></script>
<script type="text/javascript" src="/docs/apigClient.js"></script>
Was this helpful?
Si vous ouvrez le fichier apigClient.js
, vous pouvez constater que la bibliothèque téléchargée a créé des enveloppeurs comme petsPost
et petsGet
, pour vos méthodes API. Vous n’avez pas besoin de modifier ce code généré.
Configurer la méthode getPets
Ouvrez le fichier home.js
dans le dossier home
et mettez à jour le contenu de getPets
avec une méthode de récupération des données sur les animaux de compagnie (assurez-vous de mettre à jour la région si l’exécution n’a pas lieu dans us-east-1
) :
function getPets() {
// this is unauthenticated
var apigClient = apigClientFactory.newClient({
region: 'us-east-1' // The region where the API is deployed
});
apigClient.petsGet({},{})
.then(function(response) {
console.log(response);
$scope.pets = response.data;
$scope.$apply();
}).catch(function (response) {
alert('pets get failed');
showError(response);
});
}
Was this helpful?
Copiez le code mis à jour dans votre groupe S3. Rafraîchissez la page pour afficher deux animaux répertoriés, à condition d’avoir effectué le test décrit précédemment sur vos API, ayant créé ces animaux de compagnie.
Mettre à jour les animaux de compagnie avec le service API AWS
Maintenant que vous disposez d’une application Auth0 fonctionnelle avec la passerelle API, vous pouvez ajouter une méthode pour mettre à jour le tableau pets
.
Modifier la logique de la méthode putPets
pour mettre à jour les animaux de compagnie à l’aide de la fonction API. Cette fonction sera utilisée à la fois pour ajouter et supprimer des animaux de compagnie.
function putPets(updatedPets) {
var body = {pets: updatedPets};
var apigClient = apigClientFactory.newClient({
region: 'us-east-1' // set this to the region you are running in.
});
apigClient.petsPost({},body)
.then(function(response) {
console.log(response);
}).catch(function (response) {
alert('pets update failed');
showError(response);
});
}
Was this helpful?
Copiez le code mis à jour dans votre groupe S3. Testez la méthode :
Déconnectez-vous et reconnectez-vous.
Saisissez les valeurs pour
Pet Type
etPet Price
.Cliquez sur Enregistrer pour publier vos données.
Le message « We have a <Pet Type>
for sale for <Pet Price>
», s’affiche avec un bouton rouge RETIRER sur la gauche.
Pour ajouter de la sécurité, ajoutez la fonction getSecureApiClient
au début de la méthode putPets
:
function putPets(updatedPets) {
var apigClient = getSecureApiClient();
}
Was this helpful?
Copiez le code dans votre groupe S3.
La fonction getSecureApiClient
fournie pour vous vous permettra de récupérer le jeton AWS à partir du stockage local acquis à l’aide de la délégation à l’API et utilise la clé d’accès, le secret et le jeton de session :
function getSecureApiClient() {
var awstoken = store.get('awstoken');
return apigClientFactory.newClient({
accessKey: awstoken.AccessKeyId,
secretKey: awstoken.SecretAccessKey,
sessionToken: awstoken.SessionToken,
region: 'us-east-1' // The region you are working out of.
});
}
Was this helpful?