2017-02-24 77 views
0

使用this post,我已成功创建了一个控制台应用程序,用于验证数据并将其推送到我自己的PowerBI仪表板。这是在根据说明配置了我自己的应用程序之后的一个ClientIdRedirectUri。然而,我遇到了问题,将其转换为我的团队创建的仪表板。使用GroupId对PowerBI仪表板进行身份验证?

我们有几个仪表板位于https://{name}.powerbi.com/groups/{group id}/dashboards/{dashboard id}。从上面的帖子,代码即可获得一个AAD的道理,由于稍加修改的Microsoft.IdentityModel.Clients.ActiveDirectory更新的版本,是:

private static string GetToken() 
{ 
    string clientID = "{Client_ID}"; 
    string redirectUri = "https://login.live.com/oauth20_desktop.srf"; 

    string resourceUri = "https://analysis.windows.net/powerbi/api"; 

    string authorityUri = "https://login.windows.net/common/oauth2/authorize"; 

    AuthenticationContext authContext = new AuthenticationContext(authorityUri); 
    PlatformParameters parameters = new PlatformParameters(PromptBehavior.Never); 

    string token = authContext.AcquireTokenAsync(resourceUri, ClientId, new Uri(RedirectUri), parameters).Result.AccessToken; 

    Console.WriteLine(token); 
    Console.ReadLine(); 

    return token; 
} 

因为我不知道ClientID的,我已经尝试使用的GroupId,但这失败了。如果我没有可用的ClientId,我怎么能找到它或以其他方式进行身份验证?在这种情况下,我如何知道适当的RedirectUri和ResourceUri?

+0

我在学校做了一个PowerBI项目。你有什么真正的问题?访问已发布的仪表板(我假设您通过PowerBi托管完成此操作)? – Jomasdf

+0

通过编程访问_push_数据到我的仪表板。我可以从我的应用程序中推送数据,当它从连接的帖子中定位到'ClientId' +'RedirectUri'时,但是当试图将数据推送到我的团队的BI仪表板时,我无法向AAD进行身份验证,因为BI没有公开什么ClientId ,RedirectUri和ResourceUri我应该使用。 – user655321

+1

@ user655321使用与之相同的clientID进行身份验证。对于组访问,它不需要有所不同。您可能需要仔细检查您创建的AAD应用程序(为了生成clientID)以确保它请求所有Power BI权限。 – GregGalloway

回答

1

如果您使用用于登录访问团队仪表板的相同帐户登录到您的个人仪表板,则可以重复使用这两种情况下的ClientID。

在更多的技术术语:您可以重复使用的客户端ID,如果你自己PowerBI仪表板和您的团队都是捆绑在同一Azure的AD。 (如果它们绑定到不同的Azure AD,那么您可以为每个Azure AD OR注册一个应用程序,或者只有一个应用程序注册并将多租户开关设置为true,但希望您能够覆盖第一个案例并且不需要担心这一点)。

PowerBI权限没有被限制到特定仪表板本身的范围。相反,如果setup via User Delegation,应用程序将能够为登录用户有权访问的任何数据集执行选定操作(例如读取和写入所有数据集)。