如何在Power BI DataConnector中存储凭据?

6

我正在构建一个使用OAuth的自定义Power BI数据连接器。 我正在遵循GitHub示例。 但是,这将客户端凭据(在OAuth中需要用于'code flow')存储为纯文本文件。 这是否有一种安全的替代方法?


你所说的关于纯文本文件的那一点,是否也适用于 .mez 文件 - 不仅仅是将其隐藏在 .gitignore 中? - sgdata
我在想,你或许可以将 client_id 设为静态代码,因为它不是那么“必要”,然后使用身份验证方法 Key 来保存用户凭据中的 client_secret。但这取决于你是否需要同时进行用户登录。 - sgdata
有用的链接:https://learn.microsoft.com/en-us/power-query/handlingauthentication - sgdata
1
是的,明文密钥被添加到了“.mez”文件中,这让我很困扰。我甚至查看了Power BI桌面版中捆绑的一个“mez”文件,并发现其客户端ID和密钥以明文硬编码的形式存在 :( - Neeraj
1
已作为漏洞提交给MSRC,并被视为错误 - 点赞以提高可见性! https://community.powerbi.com/t5/Issues/client-id-and-client-secret-unprotected-in-mez-and-pqx-files/idi-p/1037857 - sgdata
1个回答

1
很不幸,根据微软员工Curt Hagenlocher的说法,由于当前的“技术水平”,没有办法安全地保护这些凭据:
引用: “无法在某人的桌面上保护秘密。这就是为什么一些OAuth提供商(如AAD)支持“本机应用程序”模式,其中有客户端ID但没有密码。在这个领域最新的发展是PKCE,我们计划在今年晚些时候提供示例代码。”
“原则上,可以为服务使用单独提供密码 - 我希望有一天我们能做到这一点 - 但需要创建大量基础设施来支持这一点。”
我建议加密模块本身,但Curt的回应是这也是无效的:
引用: “所有人都只需要运行Fiddler,他们就可以看到发送到令牌终结点的确切密码。”
完整对话:

https://github.com/microsoft/DataConnectors/issues/298


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接