azure - 使用客户端凭据从 Azure AD 获取访问 token 以进行 native 应用程序注册 (PowerBI)

标签 azure authentication azure-active-directory powerbi adal4j

我使用后端应用程序中的 adal4j(版本 1.2.0)来获取访问 token ,以便能够使用 PowerBI REST API 嵌入报告(更具体地说,是GenerateToken 方法)。我已在 Azure 中注册了一个 native 应用程序,并为其提供了必要的权限。我可以使用用户名/密码组合获取访问 token ,如下所示:

AuthenticationContext ac = new AuthenticationContext("https://login.windows.net/TENANT_ID/oauth2/authorize", false, es);
Future<AuthenticationResult> f = ac.acquireToken("https://analysis.windows.net/powerbi/api", CLIENT_ID, USERNAME, PASSWORD, null);

然后使用 token 成功对 API 进行身份验证,并最终显示嵌入的报告。但是,就我而言,我当然希望使用客户端凭据(客户端 ID、客户端 key )而不是用户帐户。我可以再次获取 token ,如下所示:

AuthenticationContext("https://login.windows.net/TENANT_ID/oauth2/authorize", false, es);
ClientCredential cc = new ClientCredential(CLIENT_ID, CLIENT_SECRET);
Future<AuthenticationResult> f = ac.acquireToken("https://analysis.windows.net/powerbi/api", cc,null);

客户端ID是注册的 native 应用程序的应用程序ID,客户端 key 是通过向应用程序添加 key 来定义的。 我再次获得了 token ,但现在我无法再使用它对 API 进行身份验证(HTTP 403,没有任何进一步的详细信息)。

所以我的问题是,这是一个应该首先工作的有效方案吗?和/或者我只是缺少 Azure 中或使用 adal4j 的技术信息吗?

编辑:下面是委派应用权限的屏幕截图。

enter image description here

最佳答案

据我所知,Power BI REST API 仅支持委派权限,但不支持任何应用程序权限。您会发现azure门户中没有可用的应用程序权限。因此,Power BI REST API 不允许在没有用户身份的情况下进行客户端凭据流。相关主题 herehere供您引用。

如果您想从服务连接到 Power BI REST API,您可以使用 Resource Owner Password Credentials Grant flow .

关于azure - 使用客户端凭据从 Azure AD 获取访问 token 以进行 native 应用程序注册 (PowerBI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44667691/

相关文章:

linux - 在 ubuntu 中以 root 身份登录时出错

vue.js - @nuxt/auth 我可以使用参数发送刷新 token 吗?

azure - 如何在 Azure AD B2C 租户中注册 Zendesk 应用程序(基于 SAML)以执行 SSO?

asp.net-mvc - 使用 Azure Active Directory OAuth 时没有名字或姓氏声明

java - 如何在 Java 中解码从 Azure 获取的 SAML token ?

azure - 通过 Visual Studio 2019 将逻辑应用部署到 Azure

csv - 微软Azure的架构。 CSV 到 SQL

authentication - CakePHP 3 authError 消息翻译不起作用

java - 如何将自定义性能计数器数据从 Application Insights Java SDK 插入到云服务

azure - Azure媒体服务广播到另一服务