PowerBI自定义视觉对象的SSO(单点登录)实现方案咨询
PowerBI自定义视觉对象实现SSO并获取用户会话令牌的技术方案
核心前提与限制
- PowerBI自定义视觉本身无法直接获取用户原始会话令牌,必须依赖官方认证机制,严格遵循平台安全规范,禁止绕过权限限制。
- 所有令牌操作仅可用于授权的后端流程,不可泄露或滥用。
实现步骤
1. PowerBI Embedded场景下的AAD SSO集成
如果自定义视觉嵌入在PowerBI Embedded应用中,可通过以下方式获取令牌:
- 嵌入配置中启用
effectiveIdentity参数,传递用户AAD身份至视觉对象。 - 利用PowerBI视觉API的
authenticationManager接口请求临时令牌,代码示例:import { IVisualHost } from "powerbi-visuals-api"; export class CustomVisual implements IVisual { constructor(private host: IVisualHost) { // 请求针对后端API的AAD令牌 this.host.authenticationManager.getAadTokenAsync("<你的后端API资源ID>") .then(token => { // 使用令牌调用后端流程 fetch("<你的后端API地址>", { headers: { "Authorization": `Bearer ${token}` } }); }); } }
2. PowerBI服务中的自定义视觉实现
若视觉发布到PowerBI服务,需通过AAD应用权限委托实现:
- 注册AAD应用,配置委托权限,允许代表用户访问后端API。
- 在自定义视觉中调用
getAadTokenAsync方法,该方法会自动以当前PowerBI用户身份发起委托认证,获取对应后端API的令牌。 - 确保后端API已配置AAD认证,且PowerBI租户已授权该AAD应用的权限。
3. 令牌安全使用规范
- 令牌为短期有效,需在过期前重新请求,禁止长期缓存。
- 令牌仅可用于指定的后端API资源,不可跨服务使用。
- 禁止在前端代码中打印或暴露令牌,所有后端调用需通过视觉的安全通道发起。
常见问题排查
- 无法获取令牌时,检查AAD应用权限配置是否正确,以及PowerBI用户是否拥有后端API访问权限。
- 嵌入场景下,确认宿主应用的嵌入令牌已正确配置
effectiveIdentity参数。
内容的提问来源于stack exchange,提问作者788498
相关产品推荐
相关产品推荐

