我希望能够对Microsoft Power BI进行一些API调用。根据{{3}},需要使用ADAL(Active Directory授权库)获取令牌。我计划通过REST接口与Power BI进行交互,但我不确定如何使用REST接口(即纯粹通过HTTP)对ADAL进行身份验证。我发现所有示例都显示ADAL直接使用ADAL DLL和服务器进行身份验证。什么都不是HTTP。
是否有人通过REST实施使用ADAL执行身份验证?
答案 0 :(得分:2)
对于ADAL,第一步是注册应用程序。在GitHub here中的PowerBI-Developers-Repo自述文件中有一个涵盖该主题的示例。创建应用程序注册后,ADAL令牌获取可能会有所不同,具体取决于您是否尝试为用户获取App Only令牌或令牌。这取决于您是否在应用程序注册中为其提供了App Permissions(服务或守护程序,对数据的完全访问权限)或Delegated Permissions(用户作用域,API只能访问当前用户拥有的权限)。我们将详细讨论这些概念here。
因此,纯粹使用REST委托令牌获取会很困难,因为ADAL需要与用户进行交互。但是,为了获得良好的概念证明,仅限App的令牌用于非交互。 Microsoft Docs for Azure Active Directory中记录了here。这次收购就像这样简单POST
:
POST <https://login.microsoftonline.com/{tenant}/oauth2/token> HTTP/1.1
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id={application id from the Application registration}
&client_secret={Application Key from Azure AD registration}
&resource=https%3A%2F%analysis.windows.net/powerbi/api%2F
有关该通话的详细信息here。
对于用户令牌,您可以这样做:
// Line breaks for legibility only
https://login.microsoftonline.com/{tenant}/oauth2/authorize?
client_id={Application ID from the registration}
&response_type=token
&redirect_uri={URL encoded redirect from application registration}
&response_mode=query
&resource=https%3A%2F%analysis.windows.net/powerbi/api%2F
&state=12345
这个问题是它将为用户提供交互式登录,因此在这种情况下不是真正的REST。如果您只是浏览浏览器中的该网址,将{tenant}替换为您的租户名称或ID,则重定向将包含一个URL参数access_token
,该参数将成为您的JWT令牌。但是对于每个REST测试和学习,我建议首先尝试仅限App的令牌方法。完成后,只需将Header:Authorization: bearer access_token
添加到您对API的REST调用中。