Configurer les Autorisations de l'Application dans Azure AD
Fond
J'ai une Web API inscrit dans Azure AD et sécurisé à l'aide de WindowsAzureActiveDirectoryBearerauthentication (OAuth2 porteur du jeton). C'est un B2B-type de scénario où il n'y a pas les utilisateurs interactifs - les applications de l'appel de l'API sont des démon-comme arrière-plan des applications. En tant que tel, je n'ai pas besoin du consentement de l'expérience - je veux juste les applications de confiance pour être en mesure d'appeler l'API, et d'autres applications, même si elles peuvent présenter une pièce d'jeton OAuth - être refusé.
Ce que j'ai essayé
Cet exemple semblait décrire mon scénario presque exactement. Cependant, la façon dont il détermine si l'appelant est une application légitime ou pas, c'est en comparant le clientID présentés au moyen d'une réclamation de l'appelant à une valeur codée en dur. Évidemment, vous pouvez stocker la liste de confiance clientIDs de l'extérieur au lieu de coder en dur, mais il semble que je devrais être en mesure d'accomplir ce via la configuration dans l'AAD portail de sorte que a) je n'ai pas de maintenir une liste de clientIDs, et b) je n'ai pas à écrire mon propre logique d'autorisation.
Il semble que je devrais être en mesure de définir une permission pour mon API, accorder cette autorisation à chaque application appelante dans l'AAD (ou un admin consentement), et puis dans mon API seulement de vérifier la présence de cette autorisation dans le scp
demande.
De la recherche sur le portail, il semble que c'est ce que Demande les Autorisations sont destinés à:
Je peux créer un permission juste à l'amende par le manifeste de l'application. Malheureusement, je ne peux pas comprendre comment spécifier que c'est une Demande de Permission, et non un Délégué Permission! J'ai essayé de changer les type
de l'Utilisateur à l'Admin comme décrit sur MSDN, mais qui ne semble avoir aucun effet.
"oauth2Permissions": [
{
...
"type": "Admin",
...
}
Question
Suis-je correct que les Autorisations de l'Application sont la meilleure solution pour mon scénario? Si oui, comment dois-je le configurer? Ou, comme je le crains, est-ce encore une autre caractéristique qui est Sur La feuille de route™, mais pas actuellement en état de fonctionnement?
OriginalL'auteur BenV | 2015-01-09
Vous devez vous connecter pour publier un commentaire.
Ben, les Autorisations de l'Application sont déclarées dans le appRoles section du manifeste. En effet, si vous déclarez un appRole appelé à dire "de confiance" dans votre ressource de l'application (stockage courtier en démo) se manifestent dans les Autorisations de l'Application déroulant. Ensuite, lorsque vous affectez cette Demande d'Autorisation pour le client app - le jeton d'accès de l'application client reçoit en utilisant les informations d'identification du client OAuth flux contient un des rôles de réclamation auprès de la valeur "de confiance". D'autres applications dans le locataire devra aussi être en mesure d'obtenir un jeton d'accès de votre ressource app - mais ils ont l'habitude de la "confiance" des rôles de réclamation. Consultez cet article de blog pour plus de détails: http://www.dushyantgill.com/blog/2014/12/10/roles-based-access-control-in-cloud-applications-using-azure-ad/
Enfin, de la façon décrite ci-dessus pour affecter une demande d'autorisation pour un client app ne fonctionne que lorsque les ressources et l'application client sont déclarées dans le même répertoire, mais si ces applications sont multi-locataire et un client d'installer ces applications, séparément, un administrateur global du client répertoire aurez besoin d'un consentement pour l'application cliente - qui aura pour conséquence la demande d'autorisation d'obtenir assigné à l'instance de l'application client du client locataire. (mon blog couvre ce trop)
Espère que cette aide.
ps: si vous êtes bloqué, n'hésitez pas à me ping sur la page de contact de http://www.dushyantgill.com/blog
Donc ne la définition d'un
oauth2Permission
avecType: Admin
dire que c'est toujours un délégué l'autorisation, mais il est consenti pour une fois par un admin à la place de chaque utilisateur?Oui, c'est correct.
Comment fonctionne exactement l'admin consentement dans ce cas? Je suis en train de voir où en tant qu'administrateur je peux cliquer sur le "consentement" bouton. Tous les pointeurs serait appreicated.
avez-vous jamais comprendre comment l'admin consentements? Merci 🙂
OriginalL'auteur Dushyant Gill