2017-10-04 2 views
2

J'ai enregistré une extension de schéma pour les utilisateurs. Je voudrais l'utiliser pour stocker des données sur les utilisateurs après leur connexion à une application, mais je ne peux pas comprendre les autorisations. Sur mon (admin) compte je peux, pas de problème, mais sur les comptes des utilisateurs normaux que je reçois:Privilèges insuffisants pour écrire dans les extensions de schéma

"error": { 
    "code": "Authorization_RequestDenied", 
    "message": "Insufficient privileges to complete the operation.", 
    "innerError": { 
     "request-id": "2ee94ed5-f351-4992-8db0-2e3b420aa581", 
     "date": "2017-10-04T09:37:49" 
    } 
} 

La raison pour laquelle j'utilise une extension de schéma au lieu d'une extension ouverte (qui fonctionne), est que je dois être capable de filtrer les utilisateurs par leur extension. Je ne peux pas sembler faire cela avec une extension ouverte.

La demande PATCH est la suivante:

https://graph.microsoft.com/v1.0/me

{ 
    "extkh2zr49b_notifications":{ 
     "badgeCount":"0", 
     "pushToken":"test", 
    } 
} 

Et mes permissions délégués pour l'application sont:

profile, openid, Directory.AccessAsUser.All, Directory.ReadWrite.All, User.ReadWrite.All

Répondre

1

J'ai conclu qu'il est impossible pour les utilisateurs normaux d'éditer leurs extensions de schéma. J'ai essayé d'accorder toutes les permissions disponibles. J'ai fini par utiliser une extension ouverte à la place. J'ai pu renvoyer tous les membres d'un groupe ainsi que leurs extensions. Cela me suffit était pour (beaucoup mieux que de vérifier tous les utilisateurs de l'organisation pour une extension ...)

La requête est ci-dessous:

https://graph.microsoft.com/v1.0/groups/[id]/members/ $/microsoft.graph.user $ expand = extensions & $ select = id

Je ne trouve pas cela dans la documentation officielle de Microsoft, donc j'espère que ça continue à fonctionner!

1

Avant un utilisateur normal peut lever âge certains domaines, vous devez d'abord fournir Admin Consent pour ces étendues. Dans votre cas, les champs d'application Directory.AccessAsUser.All, Directory.ReadWrite.All et User.ReadWrite.All nécessitent un consentement.

Cet article pourrait vous intéresser: v2 Endpoint and Admin Consent.

+0

J'utilise le point de terminaison V1 et j'ai accordé l'autorisation via le portail Azure AD. J'ai essayé d'accorder en utilisant https://login.microsoftonline.com/common/adminconsent mais je reçois toujours la même erreur? –