Slides de la session "quoi de neuf avec le Microsoft Graph?" par Vincent Biret au SharePoint Saturday Paris 2017. Retour sur les nouveautés livrées au cours de 2017
4. Vincent Biret
Basé à Montréal et se balade autour du monde
@baywet
bit.ly/vincentbiret
MVP Office Servers and Services
Développeur Azure et Office 365 @ 2ToLead
5. Microsoft a effectué un investissement immense depuis plusieurs années pour unifier ses
API, modes d’authentifications, formats de données. Et fournir un modèle convergent.
Pourquoi le Microsoft Graph?
90%
of Fortune 500
companies
Utilisent
Office 365
100M
Usagers actifs
par mois
Office 365
souscriptions
payantes
8T
objets
dans Microsoft
Graph
(emails, évènements,
calendrier, usagers,
fichiers…)
6. Le Graph est la clef de voûte de la stratégie de Microsoft et beaucoup d’investissements y
sont faits depuis 2/3 ans
Beaucoup de matériel à couvrir
7. L’agenda est chargé, on va essayer de terminer à l’heure, démonstrations tout du long
Agenda
•Introduction
•Authentification et Autorisation
•SharePoint & OneDrive
•Social
•Outlook
•Général
•Azure Fonctions
•Conclusion
8. Session interactive, je vais vous poser des questions, n’hésitez pas à poser des questions
Prêt(e)s?
9. Ou le chauchemar du développeur Web moderne
Authentification et Autorisation
10. La v1 est toujours recommandée si vous devez uniquement supporter des comptes
O365. Microsoft travaille encore à migrer l’ensemble des services et faire converger les
modèles.
Deux endpoints
• AAD offre actuellement deux
endpoints (v1 et v2)
• V2 apporte:
• Authentification et autorisation
unifiée entre MSID et AAD
• Gestion par scopes (et non
resources) de manière dynamique
• Client credential flow
• On Behalf Flow
• Nouveau portail
apps.dev.microsoft.com
• Limitations V2:
• # de secrets
• sécurisation d’API
• gestion app corpo (uniquement
MSID)
• pas de wildcard redirect URL
• resources disponibles limitées
11. Le modèle de scopes permet une escalade régulière des permissions demandées à
l’usager en fonction des fonctionnalités qu’il utilise
Resources vs Scopes
• Deux façons de donner des permissions granulaires
• Les ressources doivent être déclarée d’avance avec l’application et
acceptées toutes d’un coup
• Les scopes permettent de patronner le service et demander les
permissions au fur et à mesure
• …/oauth2/authorize? client_id=<id>&resource=https%3A%2F%2Fgraph.windows.net%2F
• …/oauth2/v2.0/authorize?client_id=<id>
&scope=https%3A%2F%2Fgraph.windows.net%2Fdirectory.read%20https%3A%2F%2Fgraph.windo
ws.net%2Fdirectory.write
12. La clef c’est de bien étudier quels scenarios on implémentent et de quels protocoles on
aura besoin avant de faire un choix
ADAL et MSAL
• Deux librairies d’auth par Microsoft pour AAD
• ADAL utilise endpoints v1
• MSAL utilise endpoints v2
• MSAL encore en preview mais support commercial
14. GROUPS
PEOPLE
CONVERSATIONS
FILES
INSIGHTS
L’intégration du graph avec SharePoint s’étend peu à peu, le but n’est pas d’avoir une
parité complète avec REST/CSOM mais de fournir une API plus simple d’utilisation
APIs Listes et Sites en disponibilité générale
• Accédez au listes et librairies de
document SharePoint
• Créez des types de contenus et
colonnes personnalisés via le
graph
• Lisez et écrivez des valeurs
personnalisées depuis des
application hébergées par
SharePoint
15. On peut apercevoir une convergence des modèles entre OneDrive et SharePoint
Détails de l’API de listes
v1.0/sites/{site-id}/lists/{list-id}/
16. On peut apercevoir une convergence du modèle de groupes/équipes avec le modèle
SharePoint
Détails de l’API de sites
• Retourne les propriétés et relations pour un site d’équipe SharePoint
• Différentes « clefs primaires »
• Nom d’hôte de la collection de sites
• GUID de la collection de sites
• GUID du site
/groups/{group-id}/sites/root
/sites/root
17. API Graph OneDrive
• Disponibilité Générale
• Meilleure gestion des permissions déléguées
• Beta
• Historique des versions de fichiers
• Fil d’activités intégré (project Rome)
• Gestion des liens de partage
• Conversion de fichiers en PDF
• Génération de miniatures pour les documents
• /beta/me/drive/items/{item-id}/thumbnails
18. API OneDrive Insights/Recherche
• Nouveaux « insights »
• Éléments récents
• Partagés avec moi
• (plus de détails dans la partie générale)
• Recherche avec $filter et $search
21. L’insight working with a évolué avec le temps et le feedback de la communauté pour
fournir plus d’informations
People API (beta)
• Evolution du insight « workingWith »
• Agrégation de:
• Azure Active Directory
• Contacts (outlook)
• Personnes avec qui l’usager communique
(courriels, IM)
• Personnes avec qui l’usager collabore (SP,
OD4B)
• …
• GET /me/people
22. Le but est de déterminer rapidement quels éléments ont besoin de l’attention de l’usager
Mentions API (beta)
• Liste les mentions à un usager sur une objet ou un ensemble d’objets
• Limité à Outlook (mail) pour le moment
• GET /me/messages?
select=Subject,Sender,ReceivedDateTime,MentionsPreview
23. A terme le modèle entre groupe et team va converger
Groups API (GA)
• Les groupes unifiés offrent des APIs eux aussi
• GET /v1.0/groups?$filter=groupTypes/any(c:c+eq+'Unified’)
• Tous les composants des groups sont addressables avec leurs API:
• Drive
• Calendrier
• Listes
• Sites
• OneNote
• …
24. Microsoft souhaite fournir aux développeurs la possibilité d’intéragir avec le nouveau né
Office autrement qu’avec les bots et le modèle d’extensibilité
Teams API (beta)
• Accès au modèle de teams:
• team/group
• Channel
• Thread
• + autres workloads (calendrier, drive, plans…)
• POST /groups/{id}/channels/{id}/chatthreads
• GET /groups/{id}/channels
26. Il est beaucoup plus facile d’organiser des réunions via le graph en trouvant des plages
de disponibilités via ce nouveau endpoint.
FindTime (GA)
• Permet de trouver une disponibilité commune entre plusieurs usagers
• Hautement paramétrable
• Périodes de la journée (travail, perso…)
• Pourcentage de personnes disponibles pour considérer une option valide
• Est-ce que l’organisateur est optionnel (assistant)
• Contrainte d’emplacement
• Durée de la réunion
27. Beta
• Trouver une salle de réunion
• Règles de courrier
• Catégories
• Horaires de travail
• Fuseau horaire
• En-têtes email
• Tâches Outlook
• Réponses « Out of office »
/me/findRoomLists
/me/mailFolders/inbox/messagerules
/me/outlook/masterCategories
/me/outlook/supportedTimeZones
/me/outlook/tasks
/me/mailboxSettings/automaticRepliesSetti
ng
30. Microsoft essaie d’améliorer l’expérience de développement autour du Graph
$whatif
• Simplement ajouter $whatif à la fin d’une requ6ete 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,mobilePhon
e,officeLocation,preferredLanguage,surname,userPrincipalName,id",
"HttpMethod": "GET"
}
31. Microsoft affirme une volonté de fournir plus d’intelligence sur les données personnelles
aux développeurs mais cherche encore son chemin
Insights déplacés (beta)
• /me/trendingAround => /me/insights/trending
• /me/workingWith => /me/people
• Nouveau /me/insights/used
• Documents utilisés récemment par l’usager
• Nouveau /me/insights/shared
• Documents partagés avec moi (email ou modern attachement)
32. Même s’il n’est pas encore possible d’ajouter des types d’entités ou de nouveaux edges
(relations) Microsoft travaille activement à fournir un modèle complet d’extensibilité
Open Extensions et Schema Extensions (GA)
• Open Extensions
• Capacité de déclarer des propriétés ad-hoc sur des objets
• Sorte de « property bag » du graph
• Schema extensions
• Ajouts au schéma des types d’entités
• Un peu comme des « colonnes personnalisées » pour le graph
• Possibilité de filtrage sur ces données via $filter
• POST /schemaExtensions
33. Il est maintenant aisé de bâtir des applications de synchronisation de données et/ou qui
réagissent à des changements grâce au Graph
WebHooks & Delta API (GA)
• Delta API
• Lister les changements depuis la dernière requête
• Première requête retourne aussi un change token et next url
• Requête sur cette next url retourne uniquement ce qui a changé depuis
• Répéter l’opération
• /me/drive/root/delta
• WebHooks
• Dérivé du pub-sub design pattern, basé sur des standards web
• Permet de s’aboner à des changements de données/évènements
• Souscriptions doivent être renouvelées tous les 3 jours
• Sorte de « (remote) event receiver » asynchrones pour le web
34. Application API (beta)
• Capacité d’ajouter/modifier
des applications AAD
• Dernière pierre manquante au
déploiement entièrement
automatisé
• GET /applications
37. Le but de Microsoft est de simplifier la vie aux « citizen developers » pour leur permettre
de bâtir des solutions robustes en peu de temps et d’effort
Microsoft Graph + Azure Functions
• Bénéfices du « serverless »
• Accès aux données du Graph
• Sécurité de haut niveau et prête à l’emploi
• Basé sur App Services
38. BRK3202 – Business processes with Microsoft Graph + Azure Functions
BRK2234 – Modern API development in a serverless world with Azure Functions
Nouvelle « liaison » pour les fonctions
• Directement au Graph
• Utilise le SDK du graph
• Gère l’auth et l’authZ pour vous
Azure Function interroge le
Microsoft Graph
Web hook
Déclanche la fonction
Microsoft
Graph
39. Cette solution technique permet de bâtir des API robustes et sécurisées rapidement et
sans efforts. Ces API’s peuvent ensuite être utilisées dans une infinité de scenarios.
Exemple bâtir une api de calendrier
Page web interroge la fonction
{}
La fonction retourne une liste
JSON des évènements au client
Azure Fonction interroge le Microsoft
Graph
Microsoft
Graph
42. Même s’il a fallu plus de temps que prévu aux équipes planner pour livrer une API, elle
est finalement là et permet une interaction complète avec les données de planner.
Planner APIs (GA)
• Suppression des API dépréciées de beta
• GA v1 des nouvelles API
• GET /groups/<id>/planner/plans
• GET /planner/plans/<id>/buckets
• GET /planner/buckets/<id>/tasks
• GET /planner/tasks/<id>
43. Enormes ajouts d’API’s au Graph pour supporter la gestion des flottes de périphériques,
d’application, la distribution de la configuration, enregistrement AAD…
Intune (beta)
• Solution de gestion des applications et périphériques de l’entreprise
• GET /deviceAppManagement/mobileApps
• POST /deviceManagement/termsAndConditions
• POST /deviceManagement/windowsAutopilotDeploymentProfiles
• GET /deviceAppManagement/windowsManagementApp/healthStates/
• …
45. Imaginez que votre solution de gestion des notes de frais puisse permettre à l’usager de
prendre des photos sur mobile et compléter les informations sur pc en lui offrant une
expérience sans accroc…
Project Rome – détails techniques
• Plateforme de services OS
• SDK
• Endpoints dans le graph
• GET me/devices
• POST me/devices/{id}/commands
• PUT /me/activities/{appActivityId}
46. Surtout utile pour les fournisseurs de noms de domaines, grandes entreprises qui veulent
automatiser la gestion ou pour des scenarios DevOps. Le but annoncé et de faciliter la
configuration d’Office 365, peut importe d’où vient votre domaine.
API de domaines (beta)
• API’s permettant d’associer/valider/vérifier un nom de domaine
• GET https://graph.microsoft.com/beta/domains/contoso.com
48. Conclusion
• Microsoft investit lourdement dans le Graph
• C’est un point central de la stratégie des prochaines années
• Une mine d’or pour vos applications
• Temps de développement écourté
• Meilleures applications pour les usagers
• Economies et/ou gains de productivité pour la compagnie
Opportunité immense pour les développeurs que vous soyez ISV, consultants ou chez le client final pour fournir des applications innovantes et enrichies.
N’ajoute aucun coût à la souscription Office 365.
Pas uniquement des données mais aussi une certaine forme d’intelligence
Enormément de contenu à couvrir en un an de mises à jour.
Nous n’aurons sûrement pas le temps de tout couvrir en une session d’une heure.
On va se concentrer sur le principal.
Gestion des questions, interaction, ok avec ce programme?
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
S’éloigne un peu du sujet d’origine mais à suivre sérieusement pour permettre une meilleure efficacité des services TI de l’entreprise. Imaginez des scenario tels qu’enregistrement des périphériques BYOD pour distribution de la configuration de l’entreprise, des applications, mise en conformité au niveau de la sécurité et le tout en self service pour l’usager…
https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/resources/intune_graph_overview
À gauche Microsoft app launcher sous android qui me propose de continuer mon travail sur PC, à droite une image expliquant le concept, la remplaçant, une capture d’écran de windows timeline qui permettra d’afficher à l’usager tout ce qu’il a effectué récemment et potentiellement laissé interrompu.