无需App Registration实现用户登录AAD的解决方案咨询
结论
所有向Azure AD(AAD)发起身份验证请求的客户端,都必须关联对应的应用注册(App Registration),不存在完全跳过应用注册的身份验证流程。你使用MicrosoftPowerBiMgmt PowerShell模块时无需自行注册应用,本质是微软已经预先注册了该模块对应的官方公共客户端,内置了通用的Client ID直接供用户调用,不需要使用者自行操作注册流程。
实现方案
你不需要让使用你的Python模块的开发者自行注册应用,只需要在模块代码中内置微软官方预注册的Power BI公共客户端Client ID即可,完全匹配你的诉求:
- 微软公开的通用Power BI公共客户端预注册Client ID为
04b07795-8ddb-461a-bbee-02f9e1bf7b46,该ID为PowerShell模块、Azure CLI等微软官方工具通用的公共客户端标识,允许第三方开发者直接使用,无需额外申请。 - 你可以直接将该ID用于MSAL的
PublicClientApplication初始化,示例代码如下:
import msal # 内置微软预注册的公共客户端ID,无需用户自行注册 CLIENT_ID = "04b07795-8ddb-461a-bbee-02f9e1bf7b46" # 若需要限定仅企业内部租户登录,可将common替换为租户ID AUTHORITY = "https://login.microsoftonline.com/common" SCOPE = ["https://analysis.windows.net/powerbi/api/.default"] app = msal.PublicClientApplication(CLIENT_ID, authority=AUTHORITY) # 交互登录获取对应用户权限的令牌 token_result = app.acquire_token_interactive(scopes=SCOPE)
- 该方案支持用户使用自身AAD凭证交互登录,令牌权限完全继承当前登录用户被分配的Power BI权限,和你使用PowerShell模块的体验一致。
注意事项
- 该方案仅适用于公共客户端场景(用户本地运行脚本、交互登录的场景),不适用于需要Client Secret的无值守服务端场景,匹配你当前的模块定位。
- 该Client ID不绑定任何租户,支持所有合规的AAD用户登录,你直接内置到模块代码中即可,使用者完全不需要感知应用注册的相关流程。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

