2016-04-07 1 views
0

J'essaye de me connecter à l'APi Azure Service Management, en utilisant C#, mais la seule façon dont fonctionne l'exemple (https://msdn.microsoft.com/en-gb/library/azure/ee460782.aspx) si par une méthode d'authentification interactive, nécessitant moi pour entrer mon nom d'utilisateur et mot de passe Azure. Comme nous voudrons appeler cette méthode depuis un rôle de travailleur, cela ne sera pas possible. Y-a-t'il une façon de le faire?Connexion à l'API Azure Service Management à partir de C#, sans le login interactif

+0

Ce didacticiel n'affiche aucune méthode d'authentification interactive. Au contraire, il montre comment utiliser deux méthodes * non-interactives * pour authentifier des applications spécifiques - en utilisant AD si vous l'avez configuré, ou un certificat. Je pense que vous avez confondu l'autorisation * avec des applications spécifiques pour une étape interactive * d'authentification *? –

Répondre

1

Comme nous voulons appeler cette méthode à partir d'un rôle de travailleur, ce ne sera pas possible. Y-a-t'il une façon de le faire?

Il y a deux façons de le faire:

  1. Connect to your Azure Subscription using X509 Certificate: Bien que non recommandée en fonction de la direction dans laquelle Azure va, mais il est une option.
  2. Create a user in Azure AD just for executing Service Management API: Dans cette approche, vous allez créer un utilisateur dans votre Azure AD. Ensuite, vous attribuez à cet utilisateur un rôle Co-Admin dans votre abonnement Azure (les deux doivent être effectués via l'ancien portail Azure). Une fois que vous faites cela, vous devez obtenir le jeton en spécifiant le nom d'utilisateur/mot de passe dans votre code. Quelque chose comme ci-dessous:

    var authContext = new AuthenticationContext("https://login.microsoftonline.com/{tenantid}") 
        UserCredential userCredential = new UserCredential(userName, password); 
        AuthenticationResult authResult = authContext.AcquireToken("https://management.core.windows.net/", clientId, userCredential); 
    

Cependant, s'il vous plaît garder à l'esprit quelques choses:

  • Si vous créez l'utilisateur via le portail Azure, assurez-vous que vous vous connectez au moins une fois à l'aide cet utilisateur comme dans ce cas l'utilisateur est tenu de changer le mot de passe lors de la 1ère connexion. Assurez-vous également que le mot de passe de l'utilisateur n'expire pas. Je crois en utilisant Graph API directement, vous pouvez réaliser ces derniers.
  • La mise en place d'informations d'identification dans le code présente de gros risques. Si quelqu'un obtient ce nom d'utilisateur/mot de passe, il a essentiellement accès à l'intégralité de votre abonnement.

Si possible, s'il vous plaît voir si vous utilisez Azure Resource Manager (ARM) API est une option pour vous pour gérer votre abonnement au lieu de Service Management API. Avec Role-based access control (RBAC) dans ARM API, vous pouvez simplement créer un utilisateur de type Service Principal et ne leur accorder que les permissions dont ils ont besoin. Pas besoin d'en faire un co-administrateur sur votre abonnement.

+0

Merci, cela a fait l'affaire. Comme vous le dites cependant, il est très risqué de conserver des informations d'identification qui permettent un contrôle total sur notre abonnement Azure dans le code source/config. Nous allons examiner d'autres options pour appeler ces API, en utilisant Powershell à partir d'un serveur distinct. –