Forum Discussion

kavitakashish83's avatar
kavitakashish83
New Member
9 years ago
Solved

Auto Sign-in to Embed Power BI report in web application

Hi All,

 

I am able to show filtered power BI reports in a web application. But I need to auto sign-in using c# to AZURE ACTIVE DIRECTORY to access power BI reports.

 

Below is my ACTIVE DIRECTORY PATH :

 

https://login.windows.net/common/oauth2/authorize/?response_type=code&client_id={Client ID}&resource=https%3a%2f%2fanalysis.windows.net%2fpowerbi%2fapi&redirect_uri=http%3a%2f%2flocalhost%3a49898%2fRedirect.aspx

 

Any suggestions/comment/ solution on this would be highly appreaciated?

 

Thanks

Kavita

  • Eric_Zhang's avatar
    Eric_Zhang
    9 years ago

    kavitakashish83

     

    Then see this demo APP OWNS DATA. On license aspect, do note this approach would need Power BI premium license if you'd share your report to the users without Power BI account.

     

               // Create a user password cradentials.
                var credential = new UserPasswordCredential(Username, Password);
    
                // Authenticate using created credentials
                var authenticationContext = new AuthenticationContext(AuthorityUrl);
                var authenticationResult = await authenticationContext.AcquireTokenAsync(ResourceUrl, ClientId, credential);
    

     

5 Replies

  • Eric_Zhang's avatar
    Eric_Zhang
    Microsoft Employee

    kavitakashish83

    What do you mean auto sign-in here? 

     

    The URL in your post would redirect you to the redirect_uri appending a code in the url.

     

    in next step, you can send a POST request with the code above and get the access token.

    POST /common/oauth2/token HTTP/1.1
    Host: login.windows.net
    Content-Type: application/x-www-form-urlencoded  
    
    client_secret={client_secrect}&client_id={client_id}&grant_type=authorization_code&resource=https://analysis.windows.net/powerbi/api&redirect_uri={your redirect url}&code={code from above}

     

    • kavitakashish83's avatar
      kavitakashish83
      New Member

      Thanks for the reply.

       

      Auto Sign-in means user doesn't need to login into POWER BI Azure site.

       

      Below is my complete code:

       

      string redirectUri = String.Format("{0}Redirect.aspx", Properties.Settings.Default.RedirectUrl);
      string authorityUri = Properties.Settings.Default.AADAuthorityUri;

      // Get the auth code
      string code = Request.Params.GetValues(0)[0];

      // Get auth token from auth code
      TokenCache TC = new TokenCache();
      AuthenticationContext AC = new AuthenticationContext(authorityUri, TC);

      ClientCredential cc = new ClientCredential(Properties.Settings.Default.ClientID,Properties.Settings.Default.ClientSecret);

      AuthenticationResult AR = AC.AcquireTokenByAuthorizationCode(code, new Uri(redirectUri), cc);

      Session[PowerBI.authResultString] = AR;
      Response.Redirect("~/PowerBI.aspx", false);

       

      Kindly suggest!

       

      Thanks

      Kavita

      • Eric_Zhang's avatar
        Eric_Zhang
        Microsoft Employee

        kavitakashish83

         

        Then see this demo APP OWNS DATA. On license aspect, do note this approach would need Power BI premium license if you'd share your report to the users without Power BI account.

         

                   // Create a user password cradentials.
                    var credential = new UserPasswordCredential(Username, Password);
        
                    // Authenticate using created credentials
                    var authenticationContext = new AuthenticationContext(AuthorityUrl);
                    var authenticationResult = await authenticationContext.AcquireTokenAsync(ResourceUrl, ClientId, credential);
        

         

  • Anonymous's avatar
    Anonymous
    Not applicable

    How to do same thing in .net core web api?