如何在服务主体的认证方式下嵌入Power BI 报表:
先决条件:
1)Power BI Pro 帐户(包含用户名和密码的主帐户,用于登录 Power BI Pro 帐户),或服务主体(仅限应用的令牌)。
2)需要设置自己的 Azure Active Directory 租户。
整个过程主要分为两步(由于验证类型分为主账户和服务主体,本次只针对服务主体做介绍):
1)在Azure 中注册应用程序;
2)将Power BI报表嵌入到应用程序
在Azure 中注册应用程序
-
登录到Azure门户,在左侧导航栏找到“所有服务”——搜索点击应用注册:
-
点击新注册:
3.填写应用信息,可以选择自己需要的网址进行注册(可以选择 http://localhost:13526这个网址作为重定向 URI)。 注册完应用以后会自动生成一个服务主体。(OAuth 2.0认证时,重定向URI应该填写api地址,方便解析授权码,参考:https://blog.csdn.net/leinminna/article/details/109100731)
4.授予注册的本地应用程序相关 Windows Active Directory 和 Power BI Service 权限,如图所示:
您可以根据您自己的需求,参考如下链接,根据需要的API 进行选择:https://docs.microsoft.com/en-us/rest/api/power-bi/reports/getreportingroup
切记,添加权限后需点击“授予管理员同意”,才能完成所有步骤。
配置服务主体相关权限
-
在 Azure Active Directory 中新建一个安全组,并将注册应用生成的服务主体加到成员中。
然后
还需要注册
-
登录Power BI Service 网站授予相关admin权限
-
选择 “管理门户” 进行相关授权,将创建的安全组添加到”允许主体服务访问 Power BI API”:
-
创建新的 v2 版本的 Power BI Workspace,并将服务主体设置为此工作区的管理员:
将Power BI 报表嵌入到应用程序
此过程大概分为3步,在本次示例中,我们通过Postman获取EmbedToken、嵌入URL及Report ID;
- 获取access_token(加粗标识为租户ID)
发送post到https://login.chinacloudapi.cn/2bf14663-2f99-4119-bde1-d970664a7b23/oauth2/token
body为
data:{
grant_type:client_credentials
resource:https://analysis.chinacloudapi.cn/powerbi/api
client_id:注册应用的应用程序ID
client_secret:应用程序密码
}
应用程序ID、租户ID在如下位置获取:
应用程序密码在如下位置获取:
示例如下:
Content-Type:application/x-www-form-urlencoded
-
利用上一步的access_token获取embedUrl及Report ID
发送GET 到您工作区(加粗标识为工作区ID)
https://api.powerbi.cn/v1.0/myorg/groups/150f3cdb-425f-40e0-b11c-5a376f012791/reports
Authorization Type: Bearer Token
Token: 上一步中access_token
-
获取Embed token
发送post到https://api.powerbi.cn/v1.0/myorg/groups/29427125-e483-48fe-ab6e-e4de5dbd961e/reports/d788830e-4630-45d0-bd94-ecc7e35ccfdf/GenerateToken 黄色部分替换成您自己的group id和report id
Authorization:Bearer 第一步的token
headers为
Content-Type: application/json
Accept:application/json
body为
data:{
“accessLevel”:“View”,
“allowSaveAs”:“true”
}:
到这里信息获取完毕,大家可以使用Microsoft Power BI Embedded Playground进行测试https://microsoft.github.io/PowerBI-JavaScript/demo/v2-demo/index.html: