繁体   English   中英

从c#连接到Azure服务管理API,无需交互式登录

[英]Connect to the Azure Service Management API from c#, without the interactive login

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

因为我们希望从辅助角色中调用此方法,所以这是不可能的。 有办法吗?

有两种方法:

  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中创建一个用户。 然后,您将在Azure订阅中为该用户分配一个Co-Admin角色(两者都应通过旧的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 Portal创建用户,请确保至少使用该用户登录一次,因为在这种情况下,要求用户在第一次登录时更改密码。 另外,请确保用户密码不会过期。 我相信直接使用Graph API可以实现这些目标。
  • 将用户凭据放入代码中会带来很大的风险。 如果有人掌握了该用户名/密码,则他们实际上可以访问您的整个订阅。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM