我们正在开发一个任何客户都可以使用Azure活动目录登录的应用程序。2我们需要一些方法来读取用户租户信息,然后获取与其订阅相关联的所有虚拟机。
guykilcj1#
也许你可以将你的应用程序注册为多租户应用程序,以便外部Azure AD中的用户能够登录你的应用程序。有关多租户应用程序的详细信息,请参阅此doc要获取用户Azure订阅中的VM信息,你需要实现一个流程,让你的用户(应具有Azure订阅所有者角色)至少授予用户订阅你的多租户应用的读取VM权限,以便你的应用可以获取你需要的用户VM信息。我将详细解释您要求的孔工艺:
步骤1:
你只需参考this doc即可部署多站点应用。如果来自其他Azure AD(我们在此处称之为B租户)的用户希望使用你的多租户应用,则B租户的管理员应在你的应用中注册(此过程的详细信息请参阅此处)
第二步:
AD管理员完成注册过程后,您的多租户应用程序将显示在B租户的“企业应用程序”中。您可以使用多租户应用程序ID找到它:x1c 0d1x此步骤仅用于检查您的应用是否已成功驻留客户的租户。
第三步
此步骤将向你的多租户应用授予租户B的特定Azure订阅的VM相关权限。你应该让Azure订阅管理员(具有所有者角色)授予此权限:转到订购刀片式服务器:
将“虚拟机贡献者”角色(这是一个内置角色,它拥有所有VM管理权限,而不是阅读权限)添加到您的多租户应用,您可以使用其应用ID找到您的应用:选中后点击“保存”,此步骤完成。
步骤4
尝试从B租户的某个Azure订阅获取VM信息。这一步,我将使用REST API获取您需要的VM信息。从B租户获取访问令牌:
Request URL: POST https://login.microsoftonline.com/<-B tenant name->/oauth2/token Request header: Content-Type: application/x-www-form-urlencoded Request Body: client_id=<-your multi teant app id->& client_secret=<-client secret of your multi tenant app->& grant_type=client_credentials& resource=https://management.azure.com/
您可以通过下面的REST API获取access_token以获取所需的VM信息:
Request URL: GET https://management.azure.com/subscriptions/<-your users' subscription ID->/resourceGroups/<-the resource group you want to query ->/providers/Microsoft.Compute/virtualMachines?api-version=2018-06-01 Request Header : Authorization: Bearer <-access token->
我已经在我这边测试过了,它对我很有效:
希望能有所帮助!
guicsvcw2#
1.我们已在tenant-1上配置了多租户AD-APP1.同一AD-APP在tenant-2的VM-1上具有贡献者权限1.我们尝试列出tenant-1和tenant-2的所有VM。是否可以仅在API上传递tenant-1?或者,它将仅列出tenant-1的VM,因为我们使用tenant-1调用API?
2条答案
按热度按时间guykilcj1#
也许你可以将你的应用程序注册为多租户应用程序,以便外部Azure AD中的用户能够登录你的应用程序。有关多租户应用程序的详细信息,请参阅此doc
要获取用户Azure订阅中的VM信息,你需要实现一个流程,让你的用户(应具有Azure订阅所有者角色)至少授予用户订阅你的多租户应用的读取VM权限,以便你的应用可以获取你需要的用户VM信息。
我将详细解释您要求的孔工艺:
步骤1:
你只需参考this doc即可部署多站点应用。如果来自其他Azure AD(我们在此处称之为B租户)的用户希望使用你的多租户应用,则B租户的管理员应在你的应用中注册(此过程的详细信息请参阅此处)
第二步:
AD管理员完成注册过程后,您的多租户应用程序将显示在B租户的“企业应用程序”中。您可以使用多租户应用程序ID找到它:x1c 0d1x此步骤仅用于检查您的应用是否已成功驻留客户的租户。
第三步
此步骤将向你的多租户应用授予租户B的特定Azure订阅的VM相关权限。你应该让Azure订阅管理员(具有所有者角色)授予此权限:转到订购刀片式服务器:
将“虚拟机贡献者”角色(这是一个内置角色,它拥有所有VM管理权限,而不是阅读权限)添加到您的多租户应用,您可以使用其应用ID找到您的应用:
选中后点击“保存”,此步骤完成。
步骤4
尝试从B租户的某个Azure订阅获取VM信息。这一步,我将使用REST API获取您需要的VM信息。从B租户获取访问令牌:
您可以通过下面的REST API获取access_token以获取所需的VM信息:
我已经在我这边测试过了,它对我很有效:
希望能有所帮助!
guicsvcw2#
1.我们已在tenant-1上配置了多租户AD-APP
1.同一AD-APP在tenant-2的VM-1上具有贡献者权限
1.我们尝试列出tenant-1和tenant-2的所有VM。是否可以仅在API上传递tenant-1?或者,它将仅列出tenant-1的VM,因为我们使用tenant-1调用API?