生成有效的oauth2令牌以访问PowerBI API时出现问题

时间:2020-06-02 16:19:57

标签: azure api azure-active-directory powerbi

设置:

由于我的公司希望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社区网站没有太大帮助。

2 个答案:

答案 0 :(得分:1)

1。如何管理Azure Power BI嵌入式容量

如果要使用rest API管理Azure Power BI Embedded的容量,请参考以下步骤。

  1. 创建服务主体并将Azure RABC角色分配给sp(我使用Azure CLI)
az login
#it will create a service principal and assign contributor role to the sp
az ad sp create-for-rbac -n "jonsp2"

enter image description here

  1. 获取令牌
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/
  1. 通话休息API
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PowerBIDedicated/capacities/{dedicatedCapacityName}/suspend?api-version=2017-10-01

Authorization: Bearer <token>

enter image description here

2。如何调用Power BI Rest API

如果您要致电Power BI rest api,请参阅documentdocument

详细步骤如下

  1. 在Azure门户中注册Azure AD应用程序

  2. 配置API权限 enter image description here
    enter image description here

  3. 测试(我在邮递员中测试) 一种。获取访问令牌 enter image description here enter image description here

    b。调用API enter image description here

答案 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/