Power BI is turning 10, and we’re marking the occasion with a special community challenge. Use your creativity to tell a story, uncover trends, or highlight something unexpected.
Get startedJoin us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.
Hi!
I have some questions regarding showing Power BI reports in a custom web application.
The web application is based on an ASP.NET 4.6/ASP.NET identity, (claims aware) and the users authenticate with an AD FS server.
(Both onprem Active Directory and other non Active Directory IDP).
- Is it possible to publish an embedded Power BI report in the web application, and show data based on the logged in user identity?
- If this is possible, does the users of the web application need any Power BI licens?
Best regards!
/Jonas
Solved! Go to Solution.
Hi @rossnruthie,
Thanks for response. That is a serious issue and makes the new API way less powerfull then the old embedded system. Not to say useless in a multi tenant environment. @Eric_Zhang hope the RLS feature comes soon 🙂
@Ncedia wrote:
Hi!
I have some questions regarding showing Power BI reports in a custom web application.
The web application is based on an ASP.NET 4.6/ASP.NET identity, (claims aware) and the users authenticate with an AD FS server.
(Both onprem Active Directory and other non Active Directory IDP).
- Is it possible to publish an embedded Power BI report in the web application, and show data based on the logged in user identity?
- If this is possible, does the users of the web application need any Power BI licens?
Best regards!/Jonas
Two options.
With license, you can use Embedding with Power BI users and set Power BI Row Level Security or either use filter.
Without license, you'll have to use Embedding with non-Power BI users. As to filter or using RLS, RLS used to work for the old embedding model(deprecated), for the new model, the RLS feature is on the roadmap and would be released in next quarter. So at this moment, use filter in the Power BI Javascript API can be the only workaround. See a demo below.
<html> <script src="https://microsoft.github.io/PowerBI-JavaScript/demo/node_modules/jquery/dist/jquery.js"></script> <script src="https://microsoft.github.io/PowerBI-JavaScript/demo/node_modules/powerbi-client/dist/powerbi.js"></script> <script type="text/javascript"> window.onload = function () {
var users= ["user1"]; //get the client name with javascript from your page var Filter = { $schema: "http://powerbi.com/product/schema#basic", target: { table: "Table", column: "username" }, operator: "Contains", values: users } // Read embed application token from Model var accessToken = "H4sIAAAAAAAEAB2 xxxxx uCwAA"; // Read embed URL from Model var embedUrl = "https://app.powerbi.com/reportEmbed?reportId=1f1d9145-738a-4d20-ab5b-1236b283e942&groupId=73e1a3c6-08c4-4651-aa04-2bb701a573c7"; // Read report Id from Model var embedReportId = "1f1d9145-738a-4d20-ab5b-1236b283e942"; // Get models. models contains enums that can be used. var models = window['powerbi-client'].models; // Embed configuration used to describe the what and how to embed. // This object is used when calling powerbi.embed. // This also includes settings and options such as filters. // You can find more information at https://github.com/Microsoft/PowerBI-JavaScript/wiki/Embed-Configuration-Details. var embedConfiguration = { type: 'report', tokenType: models.TokenType.Embed, accessToken: accessToken, embedUrl: embedUrl, id: embedReportId, permissions: models.Permissions.All, filters:[Filter,Filter2], settings: { filterPaneEnabled: true, navContentPaneEnabled: true } }; var $reportContainer = $('#reportContainer'); var report = powerbi.embed($reportContainer.get(0), embedConfiguration); } </script> <div id="reportContainer" powerbi-settings-nav-content-pane-enabled="true" powerbi-settings-filter-pane-enabled="true"></div> </html>
How does this implementation avoid that the user might change the username?
Hi @Anonymous,
Using the filter logic does NOT prevent the user from changing the username and that is a serious security problem. Based on my research there is no way to currently use RLS in the new api. The only option currently is to create a report filter and apply it within the JS as the sample above shows.
Hi @rossnruthie,
Thanks for response. That is a serious issue and makes the new API way less powerfull then the old embedded system. Not to say useless in a multi tenant environment. @Eric_Zhang hope the RLS feature comes soon 🙂
You can use the username() function in the DAX statement and pass the username via the token. AFAIK a Power BI Premium subscription is needed for that. The user of your application it self does not need any subscription for that. See also https://powerbi.microsoft.com/en-us/documentation/powerbi-developer-embedding/#embedding-with-non-po...
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
Check out the June 2025 Power BI update to learn about new features.
User | Count |
---|---|
4 | |
3 | |
3 | |
3 | |
3 |