对 PowerBI 用户的授权 Oauth2 错误请求

Authorization Oauth2 bad request for PowerBI user

我正在构建示例 ASP.NET 5 (vNext) Web 应用程序以通过 Power BI 代表 PowerBI 用户执行操作 API。

我按照所有步骤 here 注册了我的应用程序并且我有 ClientId。 该应用程序已添加到我的 Azure Active Directory realavaloro.onmicrosoft.com

我的 Web 应用程序能够将用户重定向到权限 https://login.windows.net/common/oauth2/authorize/,将 response_typeclientIdresourceredirect_uri 作为查询参数传递

 "response_type": "code"
 "resourceUri":  "https://analysis.windows.net/powerbi/api",
 "clientId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
 "redirectUri": "http://localhost:59136/"

浏览器被正确重定向到 Microsoft 页面,用户输入了他的 Power BI 凭据。如果通过身份验证,它将使用代码 + session_state

重定向到 redirect_uri

问题是我没有完全理解这个机制.. :)

如果我使用我的 PowerBI 测试帐户凭据 (diego@realavaloro.onmicrosoft.com) 身份验证成功并且浏览器使用代码正确重定向 + session_state

但是,如果我尝试使用其他 PowerBI 凭据进行身份验证,例如 joe@companyb.com,它无法使用 Bad Request 消息进行身份验证: AADSTS70001: Application with identifier 408c866f-ad71-4354-b9fd-c954cae84dd7 was not found in the directory companyb.com

我认为任何拥有 PowerBI 帐户的用户都可以通过我们的 Web 应用程序,通过 API 使用他的 PowerBI 帐户,前提是我们的 Web 应用程序具有权限。

但似乎如果我们希望通过这种方法实现这一点,每个用户都需要他们自己的 Azure Active Directory 来验证

这里有什么我遗漏的吗?

是否有任何选项允许我们的应用程序代表任何 Power BI 用户?

谢谢!

PS:我按照 https://github.com/PowerBI/getting-started-web-app-asp.net

中的指南构建了我的测试 Web 应用程序

我会自己回答。我的 Web 应用程序无法使用 Power BI 凭据对外部用户进行身份验证的原因是(呃!)因为我没有在 Azure AD 中将我的 Web 应用程序配置为 multi-tenant

感谢这个精彩的介绍 https://channel9.msdn.com/Events/Ignite/2015/BRK3551 我找到了一些很好的答案,包括 multi-tenant :)

的含义

我仍然需要调查 Azure 库来为我管理所有这些身份验证 headers 并了解 OAuth2 但至少我现在可以说身份验证适用于外部用户。