<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic How to achieve Row-Level Security using PowerBi JS API in Developer</title>
    <link>https://community.fabric.microsoft.com/t5/Developer/How-to-achieve-Row-Level-Security-using-PowerBi-JS-API/m-p/1116498#M23839</link>
    <description>&lt;P&gt;I have Power BI Embedded App-Owns data scenario where I have a report configured for Row Level Security, and the report shows different data based on the some of filter parameters I passed from client side.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When client requests report (request generated from client facing website), server side code generates Embed token (this would be server-to-server call =&amp;gt; from my server to PowerBi Service, no data from client space passed to PowerBi Service). I am using PowerBi API to generate Embed token for certain ReportID and DataSet and authentication is taken care correctly.&amp;nbsp; Now this Embed token is passed to client space and there I am using EmbedConfig to embed report. Something like below:&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;const filter = {
        $schema: "http://powerbi.com/product/schema#basic",
        target: {
            table: "table name",
            column: "Organization"
        },
        operator: "In",
        values: ["SomefilterValue"]
    };

 var config = {
        type: 'report',
        tokenType: models.TokenType.Embed,
        accessToken: accessToken,
        embedUrl: embedUrl,
        id: embedReportId,
        permissions: models.Permissions.Read,
        settings: {
            filterPaneEnabled: true,
            navContentPaneEnabled: false
        }
    };&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, my major concern is in client-side JavaScript scenario.&amp;nbsp; If I am a bad actor, I can just use Chrome developer tools (or Fiddler, or whatever) to get Embed Token. Once I have that embed token, I can use PowerBi Embed Playground and pass various filter parameters. I am really stuck at this point, I think, I am missing something.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I implmented everything according to :&amp;nbsp;&lt;A href="https://docs.microsoft.com/en-us/power-bi/developer/embedded/embed-sample-for-customers" target="_blank" rel="noopener"&gt;https://docs.microsoft.com/en-us/power-bi/developer/embedded/embed-sample-for-customers&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sun, 24 May 2020 12:39:33 GMT</pubDate>
    <dc:creator>tupadhyay</dc:creator>
    <dc:date>2020-05-24T12:39:33Z</dc:date>
    <item>
      <title>How to achieve Row-Level Security using PowerBi JS API</title>
      <link>https://community.fabric.microsoft.com/t5/Developer/How-to-achieve-Row-Level-Security-using-PowerBi-JS-API/m-p/1116498#M23839</link>
      <description>&lt;P&gt;I have Power BI Embedded App-Owns data scenario where I have a report configured for Row Level Security, and the report shows different data based on the some of filter parameters I passed from client side.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When client requests report (request generated from client facing website), server side code generates Embed token (this would be server-to-server call =&amp;gt; from my server to PowerBi Service, no data from client space passed to PowerBi Service). I am using PowerBi API to generate Embed token for certain ReportID and DataSet and authentication is taken care correctly.&amp;nbsp; Now this Embed token is passed to client space and there I am using EmbedConfig to embed report. Something like below:&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;const filter = {
        $schema: "http://powerbi.com/product/schema#basic",
        target: {
            table: "table name",
            column: "Organization"
        },
        operator: "In",
        values: ["SomefilterValue"]
    };

 var config = {
        type: 'report',
        tokenType: models.TokenType.Embed,
        accessToken: accessToken,
        embedUrl: embedUrl,
        id: embedReportId,
        permissions: models.Permissions.Read,
        settings: {
            filterPaneEnabled: true,
            navContentPaneEnabled: false
        }
    };&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, my major concern is in client-side JavaScript scenario.&amp;nbsp; If I am a bad actor, I can just use Chrome developer tools (or Fiddler, or whatever) to get Embed Token. Once I have that embed token, I can use PowerBi Embed Playground and pass various filter parameters. I am really stuck at this point, I think, I am missing something.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I implmented everything according to :&amp;nbsp;&lt;A href="https://docs.microsoft.com/en-us/power-bi/developer/embedded/embed-sample-for-customers" target="_blank" rel="noopener"&gt;https://docs.microsoft.com/en-us/power-bi/developer/embedded/embed-sample-for-customers&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 24 May 2020 12:39:33 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Developer/How-to-achieve-Row-Level-Security-using-PowerBi-JS-API/m-p/1116498#M23839</guid>
      <dc:creator>tupadhyay</dc:creator>
      <dc:date>2020-05-24T12:39:33Z</dc:date>
    </item>
  </channel>
</rss>

