0

我正在尝试使用 C# 连接到 Azure 服务管理 APi,但示例(https://msdn.microsoft.com/en-gb/library/azure/ee460782.aspx)的唯一方式是通过交互式身份验证方法,要求我输入我的 Azure 用户名和密码。由于我们希望从工作角色中调用此方法,因此这是不可能的。有没有办法做到这一点?

4

1 回答 1

1

由于我们希望从工作角色中调用此方法,因此这是不可能的。有没有办法做到这一点?

有两种方法:

  1. Connect to your Azure Subscription using X509 Certificate:虽然根据 Azure 的发展方向不推荐,但它是一种选择。
  2. Create a user in Azure AD just for executing Service Management API:在这种方法中,您将在 Azure AD 中创建一个用户。然后,您将Co-Admin在您的 Azure 订阅中为该用户分配一个角色(两者都应通过旧的 Azure 门户完成)。完成此操作后,您需要通过在代码中指定用户名/密码来获取令牌。如下所示:

        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);
    

但是,请记住以下几点:

  • 如果您通过 Azure 门户创建用户,请确保使用该用户至少登录一次,因为在这种情况下,用户需要在第一次登录时更改密码。另外请确保用户的密码不会过期。我相信Graph API直接使用你可以实现这些。
  • 将用户凭据放入代码中存在一些很大的风险。如果有人掌握了此用户名/密码,他们基本上可以访问您的整个订阅。

如果可能,请查看 usingAzure Resource Manager (ARM) API是否是您管理订阅的选项,而不是Service Management API. 在Role-based access control (RBAC)ARM API 中,您可以简单地创建一个Service Principal类型用户并仅授予他们所需的权限。无需让他们成为您订阅的共同管理员。

于 2016-04-07T12:53:49.453 回答