2017-09-22 2 views
1

J'ai créé un exemple d'application Web appelant une API Web et utilisant le flux d'octroi de code oAuth sur Azure AD.Application est enregistré dans Azure AD et j'ai également donné les autorisations requises via le portail Azure. Tout semble fonctionner comme prévu.Priorité d'autorisation déléguée et d'application Azure

Il y a deux options pour l'autorisation

  • délégué Permission

  • application Permission

est-il recommandé d'utiliser type de mélange de jeu d'autorisations (délégué App +) pour votre application?

Si j'accorde le même type de permission à mon API à la fois pour le délégué et l'application, quel ensemble d'autorisations aura préséance? Cela dépendra-t-il de l'écoulement d'oAuth par ex. Code grant ou implicite?

Dans mon code comment puis-je différencier ces ensembles d'autorisations tout en accédant à la même ressource. Je veux faire appel au contexte utilisateur seulement même le même type d'autorisation d'application est déjà là?

Répondre

3

Les autorisations d'application et les autorisations déléguées sont complètement indépendantes les unes des autres.

Les autorisations d'application s'appliquent lorsque vous suivez le Client Credential Flow (également connu sous le nom App Flow). Lorsque vous suivez ce flux, AAD essaiera d'accorder des autorisations à l'application cliente en fonction des autorisations d'application prédéfinies dans l'inscription de l'application. Ces autorisations apparaîtront dans un jeton App Only dans la réclamation role.

Dans presque tous les flux, où un utilisateur est impliqué (On-Behalf-Of, Authorization Code Grant Flow, Implicit Grant Flow, etc ...) DAA tentera d'accorder des autorisations au client en fonction des autorisations Delegated il a prédéfini. Ces autorisations apparaîtront dans les jetons App + Utilisateur dans la revendication scp (portée).

Vous pouvez contrôler les types d'autorisations accordées à votre application en ajustant la méthode d'authentification lors de l'obtention d'un jeton d'accès à une ressource.

+0

Merci @Shawn, dites-vous que les permissions Application et Delegated (sous le portail Azure) sont des types mutuellement exclusifs. Même si nous appliquons les deux types de cases à cocher du portail azure en cas de User + App (rôle) à partir de backend Azure .. Il dépend d'abord de votre type de flux puis il recherche le type d'autorisation, par exemple si le type de flux est User + App (grant), appliquera les cases à cocher déléguées UNIQUEMENT, si flow est seulement appliquer l'autorisation d'application SEULEMENT. –

+2

"si le type de flux est Utilisateur + App (octroi), appliquera UNIQUEMENT les cases à cocher déléguées, si le flux est uniquement app (client cred), il appliquera la permission de l'application UNIQUEMENT" - Correct. – Saca

+0

Merci @saca –