Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure身份验证管理实用程序_Azure_Azure Active Directory - Fatal编程技术网

Azure身份验证管理实用程序

Azure身份验证管理实用程序,azure,azure-active-directory,Azure,Azure Active Directory,我正在开发一个类似于VisualStudio云资源管理器的工具,它在用户的Azure订阅中执行一组有限的管理和部署任务 我被一些与Azure身份验证以及应用程序如何在Azure中表示自己有关的事情甩了 大多数有关Azure身份验证的文档都与允许用户根据Azure Active Directory进行身份验证的web应用程序有关。这不是我的设想。虽然me应用程序必须根据Azure AD对用户进行身份验证(就像所有Azure用户一样),但我的用户是管理员,而不是“用户” 我知道以前执行管理任务的软件

我正在开发一个类似于VisualStudio云资源管理器的工具,它在用户的Azure订阅中执行一组有限的管理和部署任务

我被一些与Azure身份验证以及应用程序如何在Azure中表示自己有关的事情甩了

大多数有关Azure身份验证的文档都与允许用户根据Azure Active Directory进行身份验证的web应用程序有关。这不是我的设想。虽然me应用程序必须根据Azure AD对用户进行身份验证(就像所有Azure用户一样),但我的用户是管理员,而不是“用户”

我知道以前执行管理任务的软件将被分配一个管理证书,该证书在基于web的Azure管理门户中单独注册。我很清楚这一点

…但是,我也了解到,管理证书几乎已被弃用,并被服务主体所取代,这本身从安全角度来看更有意义(因为它支持更细粒度的基于角色的安全性)-然而,缺点是,为了使服务主体能够与管理软件一起使用,有许多手动步骤和限制需要跳过-尤其是您需要在Azure Portal中预注册您的应用程序

我不喜欢这样,因为它大大增加了用户与我正在编写的软件之间的摩擦。我希望我的软件表现得像Visual Studio云资源管理器或Azure PowerShell,因为您不需要预先注册任何内容:1。只需在桌面上运行程序;2.将提示您使用Azure管理员帐户凭据登录。3.my softwware列出您订阅的内容,并允许您执行管理任务

到目前为止,我已经得到了一些可以做到这一点的东西——我执行以下步骤:

  • 使用Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext
    https://login.microsoftonline.com/common
    (使用显示要登录的webview的AcquireTokenAsync
    )。我使用
    clientId:“1950a258-227b-4e31-a9cf-717495945fc2”
    ,这是Azure PowerShell客户端ID
  • 使用步骤1中的令牌枚举用户帐户中的租户和订阅
  • 系统会提示用户选择租户,然后从步骤2中下载的列表中选择订阅
  • https://login.microsoft.com/{tenantId}
    (其中从步骤3检索
    {tenantId}
    ),再次使用相同的
    clientId
  • 然而,我不喜欢冒充Azure PowerShell-微软可以撤销该客户端ID

    …但如何注册可用于在步骤1中登录的clientId(当没有
    tenantId
    或订阅上下文,因此没有包含服务主体的Azure AD时)

    我不喜欢这样,因为它大大增加了用户与我正在编写的软件之间的摩擦。我希望我的软件表现得像Visual Studio云资源管理器或Azure PowerShell,因为您不需要预先注册任何内容:1。只需在桌面上运行程序;2.将提示您使用Azure管理员帐户凭据登录。3.my softwware列出您订阅的内容,并允许您执行管理任务

    实际上,VisualStudio云资源管理器也在Azure广告上注册该应用程序,并使用来管理Azure订阅。当您将帐户添加到云资源管理器时,您可以使用Fiddler捕获请求

    …但如何注册可用于在步骤1中登录的clientId(当没有租户或订阅上下文,因此没有包含服务主体的Azure AD时)

    我们需要开发一个能够让不同租户的用户使用该应用程序的应用程序。之后,我们可以使用公共端点,而不是您注册应用程序的特定租户id。然后用户使用与Azure订阅关联的帐户登录,并获得服务管理REST的访问令牌。最后应用程序可以使用访问令牌管理Azure资源。例如,我们可以使用下面的其余部分列出Azure Sbuscriptions:

    Get:https://management.core.windows.net/subscriptions
    Authorization: Bearer {token}
    x-ms-version: 2013-08-01
    
    有关验证服务管理请求的更多详细信息,请参阅

    我不喜欢这样,因为它大大增加了用户与我正在编写的软件之间的摩擦。我希望我的软件表现得像Visual Studio云资源管理器或Azure PowerShell,因为您不需要预先注册任何内容:1。只需在桌面上运行程序;2.将提示您使用Azure管理员帐户凭据登录。3.my softwware列出您订阅的内容,并允许您执行管理任务

    实际上,VisualStudio云资源管理器也在Azure广告上注册该应用程序,并使用来管理Azure订阅。当您将帐户添加到云资源管理器时,您可以使用Fiddler捕获请求

    …但如何注册可用于在步骤1中登录的clientId(当没有租户或订阅上下文,因此没有包含服务主体的Azure AD时)

    我们需要开发一个能够让不同租户的用户使用该应用程序的应用程序。之后,我们可以使用公共端点,而不是您注册应用程序的特定租户id。然后用户使用与Azure订阅关联的帐户登录,并获得服务管理REST的访问令牌。最后应用程序可以使用访问令牌管理Azure资源。例如,我们可以使用下面的其余部分列出Azure Sbuscriptions:

    Get:https://management.core.windows.net/subscriptions
    Authorization: Bearer {token}
    x-ms-version: 2013-08-01
    
    有关验证服务管理请求的更多详细信息,请参阅<