如何授权 Azure 多租户应用程序在客户租户中配置资源
How to authorize Azure multi tenant application to provision resources in customer tenant
我正在构建一个多租户应用程序,它必须在帐户设置过程中在客户(比如目标)租户中配置少量 azure 资源(资源组、甚至集线器、存储集线器等)。
我按照 azure doc 注册了一个应用程序。我可以在“企业应用程序”下看到在目标租户中创建的服务主体,并且此应用程序已委托类型“azure 服务管理 API”权限。
问题:
我想在 PYTHON 中的源租户(这是我的租户)中编写一个函数应用程序,它可以在目标帐户中获取 subscriptions/provision 资源。我在函数中尝试了 azure.identity.ClientSecretCredential
,类似 example to fetch list of subscriptions , it retuned Zero subscriptions . I think ClientSecretCredential doesn't fit for delegated type permission, until i add explicit role-assignment to the service principal , it wont have authorization . 的意思是一样的。
是否必须使用AuthorizationCodeCredential
,但需要auth_code
需要用户交互。因此,需要开发一个提示用户同意的网页,并使用此函数作为重定向 URI 将 auth_code 重定向到此函数?
还有其他办法吗?
任何代码参考都会有所帮助。
此外,MSAL
和 azure.identity
包 类 之间有什么区别。关于这方面的任何文档,何时使用哪个 API,我已经看到了使用其中任何一个的各种示例。
AuthorizationCodeCredential
不适合函数应用,因为根据我的经验,函数应用无法实现交互式登录
也许你可以使用UsernamePasswordCredential
,可能不需要分配RBAC角色。添加委托权限就足够了。无论如何,使用 ClientSecretCredential
(在这种情况下,有必要将 RBAC 角色分配给服务 principal/enterprise 应用程序)或 UsernamePasswordCredential
应该没问题。
简而言之,如果您想使用用户令牌(AuthorizationCodeCredential
或 UsernamePasswordCredential
)调用 Azure Rest API,您需要知道(或输入)目标租户用户。
其他设计:您可以使用auth code flow在您的前端应用程序中获取Azure Rest API的访问令牌并将访问令牌发送到您的函数,然后调用Azure Rest API 在函数 app.
您可以从 this post 了解 MSAL
和 azure.identity
包之间的区别。
我正在构建一个多租户应用程序,它必须在帐户设置过程中在客户(比如目标)租户中配置少量 azure 资源(资源组、甚至集线器、存储集线器等)。
我按照 azure doc 注册了一个应用程序。我可以在“企业应用程序”下看到在目标租户中创建的服务主体,并且此应用程序已委托类型“azure 服务管理 API”权限。
问题:
我想在 PYTHON 中的源租户(这是我的租户)中编写一个函数应用程序,它可以在目标帐户中获取 subscriptions/provision 资源。我在函数中尝试了 azure.identity.ClientSecretCredential
,类似 example to fetch list of subscriptions , it retuned Zero subscriptions . I think ClientSecretCredential doesn't fit for delegated type permission, until i add explicit role-assignment to the service principal , it wont have authorization .
是否必须使用AuthorizationCodeCredential
,但需要auth_code
需要用户交互。因此,需要开发一个提示用户同意的网页,并使用此函数作为重定向 URI 将 auth_code 重定向到此函数?
还有其他办法吗? 任何代码参考都会有所帮助。
此外,MSAL
和 azure.identity
包 类 之间有什么区别。关于这方面的任何文档,何时使用哪个 API,我已经看到了使用其中任何一个的各种示例。
AuthorizationCodeCredential
不适合函数应用,因为根据我的经验,函数应用无法实现交互式登录
也许你可以使用UsernamePasswordCredential
,可能不需要分配RBAC角色。添加委托权限就足够了。无论如何,使用 ClientSecretCredential
(在这种情况下,有必要将 RBAC 角色分配给服务 principal/enterprise 应用程序)或 UsernamePasswordCredential
应该没问题。
简而言之,如果您想使用用户令牌(AuthorizationCodeCredential
或 UsernamePasswordCredential
)调用 Azure Rest API,您需要知道(或输入)目标租户用户。
其他设计:您可以使用auth code flow在您的前端应用程序中获取Azure Rest API的访问令牌并将访问令牌发送到您的函数,然后调用Azure Rest API 在函数 app.
您可以从 this post 了解 MSAL
和 azure.identity
包之间的区别。