2. Passionné par les technologies, le développement et la communauté
Vincent Biret
@baywet
bit.ly/vincentbiret
Microsoft Office Dev MVP
Développeur Azure and Office 365 @ 2toLead
4. Principalement aux développeurs mais aussi scrum masters, maitres d’ouvrages,
architectes et super utilisateurs curieux
A qui s’adresse cette session?
8. Peut importe votre modèle de développement le Graph Microsoft représente un accès à
une manne de données
Votre porte d’entrée vers Microsoft
Votre
app
Passerelle
Vos données
ou celles de
vos clients
Office 365 Windows 10 Mobilité + Securité d’entreprise
1Microsoft Graph
9. Le graph permet d’avoir un modèle d’auth, et d’API pour les services persos et pro
Comptes pros et persos
(ci nommée Lucienne)
10. Le Microsoft Graph est l’API chez Microsoft qui grandit le plus vite.
Quelques chiffres
1G+Réunions planifiées
chaque mois
181Pays
65M+Sièges “mobilité”
(55% crois.)
90%Des compagnie F500
Ont des données dans le
Graph
135M+Usagers mensuels actifs
dans Office 365
1.1GAuthentifications chaque
mois
11. https://graph.microsoft.com
Au départ lié à Office 365 le Graph devient l’API Microsoft par excellence pour les
données d’entreprise et personnelles
Quelles données disponibles?
Usagers, Groupes, Organisations
Outlook
SharePoint
OneDrive
Teams
Planner
Excel
OneNote
Activités
Relais Périphérique
Commandes
Notifications
Azure AD
Intune
Identity Manager
Advanced Threat Analytics
Advanced Threat Protection
Courriel, Calendrier,
Contacts et Tâches
Sites et Listes
“Disques” et Fichiers
Cannaux, Messages
Tâches et Plans
Feuilles de calcul
Notes, et plus…
Gestion d’identité
Contrôle d’accès
Synchronisation
Domaines
Unité administratives
Applications et Périphériques
Analyse des menaces
Protection contre les menaces
Alertes
Stratégies
et plus…
Office 365 Windows 10 Mobilité + Securité Entreprise
Dynamics 365
Finances
12. Un des points clef du Graph Microsoft est l’unification des données et des modèles
API vaste et transverse
SITES
GROUPS
USERSINSIGHTS
CONTACTS
PEOPLE
ORGANIZATION
EMAIL
CONTENT
DOCUMENTS
DEVICES
TEAMS
REPORTS
ME
ADMIN UNITS
ROLES
APPS
SECURITY DATA &
AUTOMATION
ORGANIZATION
USERS
BUSINESS
PARTNER
13. Microsoft propose un fonctionnement uniforme pour l’ensemble de ses APIs
Principes de base
• Les verbes HTTP représentent l’intention: GET | POST | PATCH | PUT | DELETE
• Version: /v1.0 or /beta
• Ressource: /users, /groups, /sites, /drives, /devices, …
• Membres de la collection: /users/jean
• Propriété: /users/jean/department
• Données liées via navigation: /users/jean/events
• Paramètres d’URL: /users/jean/events?$top=5
o Format: $select | $orderby
o Filtrer/Naviguer: $filter | $expand
o Pagination: $top | $skip | $skiptoken
/{version} ?{paramètres}/{ressource}/{id}/{propierté}
14. De nombreux langages sont supportés et les SDK sont open source
SDKs
Generally Available ( /v1.0 ) Preview ( /beta )
(en preview)
Et bientôt
17. Les resources fournies par le Graph sont toujours sécurisées. Selon le contexte d’auth,
vous obtenez/avez besoin de différent jetons
Principes de base
access_token
MSAL or
ADAL
Votre APP
Microsoft
Graph
id_token
access_token refresh_token
Microsoft
Identity
18. Il est crucial de bien étudier son flux d’authentification et d’autorisation avant de se
lancer dans le développement car l’impact est majeur!
Types de contextes
Les utilisateurs peuvent consenter pour leur données, les admins pour tous les
usagers
Les admins uniquement
peuvent consentir
Permissions
Déléguées
Privileges
Utilisateur
App
permissions
Type de permission : applicationType de permissions : déléguée
Obtenir un accès en tant qu’utilisateur Accès en tant que service
Permission EffectivesPermission Effectives
19. Les permissions suivent un modèle de description. Astuce: toujours demander la plus
petite permission dont vous avez besoin!
Structure des permissions/scopes
spécifique: .All,
.Shared, etc
Read,
ReadWrite,
etc.
Entité cible:
files, mail,
groups,
calendars,
etc…
Ex: User.Read Directory.ReadWrite.All
Ressource Action Scope
20. Microsoft travaille pour améliorer la situation. C’est pour ça qu’il est d’autant plus
important de bien choisir son authentification dès le départ.
Situation complexe
Votre
audience
cible
ADALSDK Client
Enreg. App
MSAL
Endpoint
29. Microsoft essaie d’améliorer l’expérience de développement autour du Graph
$whatif
• Simplement ajouter $whatif à la fin d’une requête pour savoir d’où viennent les
données
• Pratique pour débugger
• /me/?$whatif
{
"Description": "Execute HTTP request",
"Uri": "https://graph.windows.net/v2/c03a026e-335e-458c-bad2-
3309fe59663b/users('c9452811-4b6e-4073-b7cf-
3f681f55539b')?$select=businessPhones,displayName,givenName,jobTitle,mail,mobi
lePhone,officeLocation,preferredLanguage,surname,userPrincipalName,id",
"HttpMethod": "GET"
}
30. Bien maitriser Odata est essentiel pour bâtir des applications efficaces, même si vous
utilisez un SDK
Maitrisez votre OData!
• Ensembles
• $count
• $filter
• $expand
• $orderby
• $select
• $skip/$skipToken
• $top
• Recherche
• $search
• Valeurs
• $ref
• $value
31. Microsoft se doit de définir un cadre d’utilisation pour maintenir le service. Ce cadre est
définit à plusieurs niveaux et en fonction de plusieurs concepts, ce qui complexifie le
problème.
Throttling – le problème
• Office 365 est un ensemble de services, l’usage est toujours limité
• Ils reposent sur des resources limitées (CPU, mémoire, stockage…) et coûteuses
• Ces limites peuvent être dynamique ou fixées
• Utilisation API est dynamique
• Stockage pour un usage/une site coll est fixe
• Repousser ces limites: type et/ou nombre de licences
• L’utilisation d’API est limitée par usager (au départ)
• Evite d’impacter le service, les usagers et les revenus
32. L’idée est de limiter l’usage de la ressource, étaler les pics, permettre aux fonctionnalités
clefs de survivre en arrêtant les autres ou même de dire à l’usager de ralentir avant que
tout s’arrête.
Throttling – que pouvez vous faire?
• Utilisation de cache pour la lecture (si possible)
• In proc, en mémoire, cache distribué (Redis)
• Attention aux en-tête Rate-Limit Limit, Remaining, and Reset
• Attention aux 429’s ou 503’s et impl. « exponential back-off retry policies»*
• Ou mieux, essayez après le délais fournit par Retry-After
• Implémentez le DP “Circuit Breaker”
• Limitez votre trafic entrant en utilisant de la télémétrie
34. Au final tous ces gains se traduisent par des économies en développement et une plus
grande efficacité des usagers, ce qui veut dire meilleur ROI!
Conclusion
•Un potentiel considérable
•API consistente
•Bien penser son auth
•Les fonctions sont là pour vous
•Temps de livraison réduit
•Apps mieux intégrées
•Meilleure experience usagers
Gestion des questions, interaction, ok avec ce programme?
Parler des insights aussi grâce à l’abondance des données
https://github.com/microsoftgraph
+ Stack overflow, github…
Client credential flow: le service peut s’identifier tout seul sans impersonification (compte de service)
On behalf flow: une app dans un context donné peut relayer son authentification via une API de confiance pour représenter l’app dans excel avec l’usager et pas seulement l’usager
On behalf flow va aider énormément pour les office add-ins à accèder à des API custom
https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-limitations
https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-compare
https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-service-to-service
https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols-oauth-on-behalf-of
https://myignite.microsoft.com/sessions/55110?source=sessions
Montrer aad.portal.azure.com, différence de chargement + pas besoin de souscription avec le portailapps.dev.microsoft.com