web-dev-qa-db-fra.com

Ajouter une application AAD en tant que membre d'un groupe de sécurité

J'essaie d'activer le service pour authentifier le service à l'aide de jetons AAD. Mon plan consiste à valider la revendication de "groupes" dans le jeton pour s'assurer que l'appelant est membre d'un groupe de sécurité que nous avons créé.

Par exemple, nous créerons le groupe 1 pour les lecteurs et le groupe 2 pour les écrivains. Ensuite, sur la base de la revendication des "groupes", je trouverai le bon niveau d'accès.

J'utilise l'application AAD pour émettre les jetons (pas un utilisateur), j'ai donc besoin que cette application soit membre du groupe de sécurité. Azure AD powershell ne semble pas accepter les ID d'application en tant que membres du groupe. Comment résoudre ça? existe-t-il d'autres modèles recommandés lorsque l'appelant est une autre application AAD?

Commande utilisée: https://docs.Microsoft.com/en-us/powershell/module/azuread/Add-AzureADGroupMember?view=azureadps-2.

Error:  
Add-AzureADGroupMember : Error occurred while executing AddGroupMember
Code: Request_BadRequest
Message: An invalid operation was included in the following modified references: 'members'.
RequestId: 0441a156-3a34-484b-83d7-a7863d14654e
DateTimeStamp: Mon, 11 Dec 2017 21:50:41 GMT
HttpStatusCode: BadRequest
HttpStatusDescription: Bad Request
HttpResponseStatus: Completed
At line:1 char:1
+ Add-AzureADGroupMember -ObjectId "9c2cdf89-b8d6-4fb9-9116-7749adec85c ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Add-AzureADGroupMember], ApiException
    + FullyQualifiedErrorId : Microsoft.Open.AzureAD16.Client.ApiException,Microsoft.Open.AzureAD16.PowerShell.AddGroupMember
13
George Moussa
  1. Malheureusement, vous ne pouvez pas ajouter une application en tant que membre du groupe Azure AD. Bien que le document officiel de l'applet de commande Powershell Add-AzureADGroupMember ne précise pas que vous ne pouvez pas utiliser ObjectId de l'application comme RefObjectId, vous ne pouvez absolument pas l'utiliser. Vous ne pouvez pas non plus ajouter une application en tant que membre du groupe Azure AD.

    Par exemple, nous créerons le groupe 1 pour les lecteurs et le groupe 2 pour les écrivains. Ensuite, sur la base de la revendication des "groupes", je trouverai le bon niveau d'accès.

  2. Pour votre scénario, je crains que vous ne puissiez pas y parvenir pour l'instant. Je comprends pourquoi vous en avez besoin. Selon votre demande, ma pensée est assigner votre candidature à partir de Application d'entreprise aux groupes ou aux utilisateurs et aux utilisateurs du gestionnaire avec différents droits d'accès. Cependant, vous ne pouvez pas choisir plus de rôles pour le groupe sélectionné. Le seul rôle est l'accès par défaut Si vous souhaitez définir plus de rôles pour l'application, vous pouvez vous référer à cette documentation . J'ai également essayé d'utiliser Azure AD RBAC et de créer un nouvel accès conditionnel pour mon application de test, mais tous n'ont pas en lecture seule ce choix. Vous pouvez également mettre votre idée dans Forum de commentaires Azure , l'équipe Azure le verra. Aussi, je voterai pour votre idée.

Mettre à jour:


Actuellement, vous pouvez ajouter un principal de service à un groupe AAD:

Exemple:

$spn = Get-AzureADServicePrincipal -SearchString "yourSpName"

$group = Get-AzureADGroup -SearchString "yourGroupName"

Add-AzureADGroupMember -ObjectId $($group.ObjectId) -RefObjectId $($spn.ObjectId)

Mise à jour 2:

Récemment, je constate également que de nombreux utilisateurs souhaitent attribuer des rôles à un principal de service pour laisser au principal de service des autorisations d'accès à l'application avec un rôle.

Je veux être clair ici. Les autorisations basées sur les rôles doivent être utilisées pour les utilisateurs, PAS pour les applications. Et il n'est pas conçu pour les applications. Si vous souhaitez accorder des autorisations différentes, vous pouvez envisager d'attribuer des autorisations d'application à votre principal de service à la place.

Vous pouvez exposer votre application Web/API avec des autorisations d'application en modifiant le manifeste dans les enregistrements d'application.

Vous pouvez accéder au portail Azure> Azure Active Directory> Inscriptions d'applications> Sélectionnez votre application> Manifest.

Dans appRoles, vous pouvez insérer du contenu comme ceci:

  {
      "allowedMemberTypes": [
        "Application"
      ],
      "displayName": "Access to the settings data",
      "id": "c20e145e-5459-4a6c-a074-b942bbd4cfe1",
      "isEnabled": true,
      "description": "Administrators can access to the settings data in their tenant",
      "value": "Settingsdata.ReadWrite.All"
    },

Ensuite, vous pouvez accéder à un autre enregistrement d'application auquel vous souhaitez accorder une autorisation> Paramètres> exiger des autorisations> Ajouter> Rechercher le nom d'application auquel vous souhaitez accéder> Choisissez l'autorisation d'application que vous avez créée auparavant.

Par conséquent, votre sp peut obtenir un jeton avec les autorisations d'application dans les revendications de jeton.

De plus, pour l'autorisation de la ressource, vous devez ajouter une logique de code pour donner une stratégie de contrôle pour ce jeton avec Settingsdata.ReadWrite.All prétendre.


Mise à jour 3

Actuellement, vous pouvez ajouter le principal du service à un groupe AAD directement dans le portail Azure: enter image description here

18
Wayne Yang