Après un bref aperçu de Graph API et Typescript nous verrons comment utiliser coupler les deux afin d'accéder facilement aux données d'Office 365 et Azure AD.
13. aOS Genève
22 juin 2017
Authentification : via un utilisateur
délégation des permissions
1. Enregistrement de l’application.
2. Appeler le serveur d’autorisation
3. Obtenir un access token
4. Appeler Micrososft Graph avec
l’acess token
5. Rafraichir le token expiré avec le
refresh token
14. aOS Genève
22 juin 2017
Authentification : sans utilisateur
permission propre à l’application
1. Enregistrement de l’application.
2. Configurer les permissions de
l’application (dans le portail)
3. Obtenir l’approbation d’un
administrateur
4. Obtenir un access token
5. Appeler Micrososft Graph avec
l’acess token
15. aOS Genève
22 juin 2017
Authentification
• Librairie :
• Azure AD (ADAL)
• Azure AD 2.0 (MSAL)
• MS Graph connect sample :
• Angular2
• Node.JS
• Android
• PHP
• …
16. aOS Genève
22 juin 2017
Utilisations MS Graph API
• API rest classique : http + verb.
Verbe Description
GET Lire les données d’une ressource
POST Créer une ressource ou effectuer une action
PATCH Mettre à jour une ressources avec de nouvelles
valeurs
PUT Remplacer une ressource
DELETE Supprimer une ressource
17. aOS Genève
22 juin 2017
Utilisations MS Graph API
• Structure d’une requête :
• Exemple :
• https://graph.microsoft.com/v1.0/me/messages
• https://graph.microsoft.com/beta/me/insights/trending
• https://graph.microsoft.com/v1.0/me/messages?$filter=importance eq 'high‘
18. aOS Genève
22 juin 2017
Parcourir le graph
• https://graph.microsoft.com/{version}/$metadata
19. aOS Genève
22 juin 2017
Personnaliser la réponse
Nom Description
$filter Filtre les résultats (lignes)
$select Filtre les propriétés (colonnes)
$expand Permet d’obtenir des ressources connexes.
$orderBy Ordonne les résultats
$top Limite les résultats.
$count Donne le nombre de ressources correspondant à la
requête.
$skip Permet de sauter des résultats
$search Recherche parmi les résultats
20. aOS Genève
22 juin 2017
Batch request
• Permet de faire plusieurs requête en une seul
21. aOS Genève
22 juin 2017
Tracker les changements
• Utiliser le query-parameter : $delta
• Permet de parcourir l’ensemble des mutations de la ressource.
• Retourne un nœud nommé @odata.nextLink = prochaine page de
changement
• Retourne un nœud nommé @odata.deltaLink = plus de changement
22. aOS Genève
22 juin 2017
Etendre les données
• Deux façon :
• Open extensions :
• Simple d’utilisation
• Permet d’ajouter des données non typée
• Directement liée à une ressource
• Récupération via $expand
• Schema extentions :
• Plus complexe
• Ensemble de données typées.
• Permet d’étendre le schéma du graph
• Récupération via $select, possibilité de filtré dessus, …
26. aOS Genève
22 juin 2017
Conclusion
• Grande avancée qui s’inscrit dans la logique de fédération des
services sous Office 365.
• Pas encore toutes les APIs/fonctionnalités et beaucoup en preview.
• Avance à très grands pas !
• Le tournant à ne pas manquer pour les dev Office 365.
application monolitich : découpée en différente couche fonctionnelle (présentation layer, BLL, DLL, …)
Image tirée de la doc de service frabric
Problème micro services :
déploiement : azure service fabric, container, …
communication : event driven, …
service discovery …
Multiple endpoint
Joue le rôle de routeur de requêtes/ orchestrateur
Avantages : moins d’aller retour client/services, simplification code client, une seul authentification (spécifique), loggins, contrôle du traffic, …
Inconvénient : ajout d’un nouveau composant (déploiement, …), higly avaible, doit connaitre tous les endpoints des microservices.
Developer preview
Open source depuis 2015
Le client va chercher ses données dans un gros model json (model falcor)
2015 également
Spécification, implémentation : .Net, Javascript, Python, Ruby, Scala PHP, …
Modélise les données sous forme de graph au sein du graphQl server puis dire comment les résoudre.
On utilise un client pour parler au graph
graph API facebook
API gateway = one endpoint
Donnée organiser sous forme de graph
Lié à projet rome : transmettre des scénario entre device !
Insight (mode delve objet tendance, personne avec qui je travail, personne en rapport avec un sujet, …) rapport, ….
Interroger et muter ce graph.
Tracker les changement du graph
OpenID single sign on + Oauth 2.0 gestions des autorisations.
Un seul endpoint pour accéder à l’ensemble des données.
Il faut un access token contenant les scope nécessaire pour effectuer une requête à MS Graph
Enregistrement de l’application sur : MS App Registration Portal.
Via utilisateur : serveur d’autohirsation demande d’approbation de l’utilisateur (donner les droits à l’application)
Approbation administrateur via API ou portail.
DEMO
Get : obetnir les info d’un utilisateur, d’un group, obtenir les mails, worksheet, …
Post : envoyer un mail, créer un répertoire sous onedrive, ajouter un contact, …
Version : 1.0 production App, Beta inclue les APIs en preview
Ressource : me, users, group, drives and sites. Ressource avec laquelle on souhaite interagir. Point d’entré dans le graph.
Query-paramter : customiser la réponse.
DEMO
Obtenir la description du graph pour pouvoir comprendre la façon dont il est modélisé.
Suis les normes Odata protocol (ISO/IEC approved) standardisé par Oasis.
Voir dans la doc la liste des api : user, groups, excel, azure active directory, onedrive, onenote, …
@odata.context situe le contexte au sein du graph
DEMO
$filter = where (egal, superieur, inferieur, and, or, contains, startwith, any, all, …
https://graph.microsoft.com/v1.0/users?$filter=GivenName eq 'Félix‘
$select = select (nom de champs)
https://graph.microsoft.com/v1.0/me/events?$select=subject,body,bodyPreview,organizer,attendees,start,end,location
$expand = pour accéder à une ressource relative ou à une collection (de base non retourné pour limiter la bande passante et alléger le temps de réponse du service. (un utilisateur et son manager, un utilisateur et ses collaborateurs,…)
https://graph.microsoft.com/v1.0/me/drive/root?$expand=children($select=id,name)
$orderBy = orderBy
$top = $skipToken (page suivante)
$count = retourne le nombre dans une propriété
https://graph.microsoft.com/v1.0/me/contacts?$count=true
$skip = sauté les premier résultat
$search = (seulement message et personne) limité à 250 résultat. (tous les message avec le mot…)
https://graph.microsoft.com/beta/me/people/?$search=j
https://graph.microsoft.com/v1.0/me/messages?$search="from:felix.billon@wanadoo.fr«
Sur le endpoint beta, $ est optionel !
DEMO
En beta pour l’instant
Spécifité du $select permet de ne tracker que les champs demandé
$expand inutilisable.
Les liens contiennent des tokens
DEMO
https://graph.microsoft.com/v1.0/users/delta?$select=displayName,givenName,surname
Open extensions = Office 365 data extentions
Schema extentions peut être CRUD de façon indépendante.
Connect samplle : exemple de connection
Snippet sample : exemple d’interrogation du graph (envoi d’email, accès aux excel, …)
SDKs : aide pour interroger le graph