设置:
由于我的公司希望Suspend/Resume PBI能力以优化成本,因此我试图使用控制台应用程序访问基于Azure PowerBI的API。
已经按照官方文档API Emulator Window成功访问了这些api,它的工作原理非常完美,因为它仅向身份验证窗口询问我的Outlook帐户的用户名和密码,并隐式地成功生成了身份验证令牌。
当我尝试从我的控制台应用程序实现调用api(这会自动计划触发)时,有多种方法可以以编程方式生成身份验证令牌。以下是我在访问PBI API之前用于生成相同方法的方法。
方法1 :Generating token by using Azure Active Directory Authentication Libraries.。
此方法要求通过Nuget添加AAD身份验证库,但添加后却失败,因为AcquireTokenAsync方法不带任何参数,但教程指定了4个参数供此方法使用(函数重载丢失了吗?)。所以我无法使用这种方法生成令牌。当然是库版本问题,但是official MS documentation并没有解释高于该库的可用版本。
方法2::Authorize Active Directory without dialog box标记为答案的StackOverflow问题
这种方法在调用HTTPResponseMessage时会挂断,而无需进行下一行或catch语句。
方法3::尝试使用POSTMAN模拟令牌生成,并在控制台应用程序上使用生成的令牌来检查可访问性。
这种方法可以成功生成令牌,但是在控制台应用程序中使用生成的令牌时,它表示未授权的令牌。
怀疑部分: 已经使用AppRegisteration在Azure中生成了ClientID,ClientSecretID和TenantID,但是不知道如何与Azure中的PowerBI Service关联。 Azure Active Directory是否在PBIService和AppRegisteration之间到位?基于生成的AppRegisteration详细信息已尝试访问此身份验证api(https://login.microsoftonline.com/tenantId/oauth2/token)来生成令牌。这可以成功生成令牌,但在PBI api上进行未经授权的访问却会失败。
我严重错过了什么吗?通过控制台应用程序对基于PBI的API进行身份验证的访问概念的错误之处将有所帮助。常见的PBI社区网站没有太大帮助。
答案 0 :(得分:1)
1。如何管理Azure Power BI嵌入式容量
如果要使用rest API管理Azure Power BI Embedded的容量,请参考以下步骤。
az login
#it will create a service principal and assign contributor role to the sp
az ad sp create-for-rbac -n "jonsp2"
Post https://login.microsoftonline.com/tenantId/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type =client_credentials
&client_id=<sp app id>
&client_secret=<sp app password>
&scope=https://management.azure.com/
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBIDedicated/capacities/{dedicatedCapacityName}/suspend?api-version=2017-10-01
Authorization: Bearer <token>
2。如何调用Power BI Rest API
如果您要致电Power BI rest api,请参阅document和document。
详细步骤如下
答案 1 :(得分:0)
暂停/恢复PowerBI API的说明如下:
https://docs.microsoft.com/en-us/rest/api/power-bi-embedded/capacities/suspend
https://docs.microsoft.com/en-us/rest/api/power-bi-embedded/capacities/resume
您是否阅读了整个Azure REST API参考?
发送HTTP请求所需的所有步骤都记录在这里:
https://docs.microsoft.com/en-us/rest/api/azure/