通过 REST 使用 ADAL 进行身份验证

Authenticating with ADAL via REST

我希望能够对 Microsoft Power BI 进行一些 API 调用。根据 overview documentation 需要使用 ADAL(Active Directory 授权库)获取令牌。我计划通过 REST 接口与 Power BI 交互,但我不确定如何使用 REST 接口(即纯粹通过 HTTP)对 ADAL 进行身份验证。我发现的所有示例都显示直接使用 ADAL DLL 和本地服务器使用 ADAL 进行身份验证。没有通过 HTTP。

是否有人通过 REST 实现对 ADAL 进行了身份验证?

对于 ADAL,第一步是注册应用程序。在 GitHub here. Once you have an application registration created, ADAL token acquisition is could be different depending on whether you are trying to get an App Only token or token for a User. This is dependent on the whether in the application registration you gave it App Permissions (service or daemon, full access to the data) or Delegated Permissions (user scoped, the API can only have access to what the current user has permission). The concepts are discussed in some detail here 的 PowerBI-Developers-Repo 的自述文件中有一个涵盖该主题的示例。

因此,纯粹使用 REST 委托令牌获取会很困难,因为 ADAL 需要与用户交互。但是,为了很好地证明概念,仅限应用程序的令牌用于非交互。 Azure Active Directory 的 Microsoft 文档中记录了 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。如果您刚刚在浏览器中浏览到那个 URL,将 {tenant} 替换为您的租户名称或 ID,重定向将有一个 URL 参数 access_token,它将成为您的 JWT 令牌。但是对于每个 REST 测试和学习,我建议首先尝试 App-only 令牌方法。完成后,只需将 Header: Authorization: bearer access_token 添加到 API 的 REST 调用中。