<?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 Qlik Sense Server: Using Javascript to authenticate users with JWT (401 error) in Integration, Extension &amp; APIs</title>
    <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2082576#M18657</link>
    <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Mod Header is used in the article below to inject the JWT Bearer Token as an "Authorization" header to log into Qliksense. But I would like to do the same through Javascript.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://community.qlik.com/t5/Official-Support-Articles/Qlik-Sense-How-to-set-up-JWT-authentication/ta-p/1716226?_ga=2.107852801.261853498.1607958694-1710320291.1569419813" target="_blank"&gt;https://community.qlik.com/t5/Official-Support-Articles/Qlik-Sense-How-to-set-up-JWT-authentication/ta-p/1716226?_ga=2.107852801.261853498.1607958694-1710320291.1569419813&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I coded a test webpage with a button which when a user clicks will route the users to my qlik sense URL and authenticate them with JWT.&lt;/P&gt;
&lt;P&gt;** to test the authentication I hardcoded the token.&lt;/P&gt;
&lt;P&gt;Below is a sample of my code:&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="cm-line"&gt;&amp;lt;button&amp;nbsp;onclick="getResponse()"&amp;gt;Click&amp;nbsp;Here&amp;lt;/button&amp;gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;lt;script&amp;nbsp;type&amp;nbsp;=&amp;nbsp;"text/javascript"&amp;gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;getResponse()&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;url&amp;nbsp;=&amp;nbsp;"&lt;A href="https://qliksense/jwt/hub" target="_blank"&gt;https://qliksense/jwt/hub&lt;/A&gt;";&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;token&amp;nbsp;=&amp;nbsp;"xxx";&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;xhr&amp;nbsp;=&amp;nbsp;new&amp;nbsp;XMLHttpRequest();&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.open('GET',&amp;nbsp;url,&amp;nbsp;true);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.setRequestHeader('Content-Type','application/json');&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.setRequestHeader('Accept','application/json');&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.setRequestHeader('Authorization',token);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.onreadystatechange&amp;nbsp;=&amp;nbsp;function()&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(xhr.readyState&amp;nbsp;===&amp;nbsp;4)&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(xhr.status&amp;nbsp;===&amp;nbsp;200)&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(xhr.responseText);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window.location.href&amp;nbsp;=&amp;nbsp;url;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.error(xhr.status);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Although my call is from a local host to the server I did not receive a CORS error. My header was also injected but still cant seem to log in. I used a valid token but I still got a 401 error. I could use the same token to login with my ModHeader extension.&lt;/P&gt;
&lt;P&gt;Any one has any idea how to resolve it?&lt;/P&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;</description>
    <pubDate>Mon, 12 Jun 2023 06:12:05 GMT</pubDate>
    <dc:creator>Poh</dc:creator>
    <dc:date>2023-06-12T06:12:05Z</dc:date>
    <item>
      <title>Qlik Sense Server: Using Javascript to authenticate users with JWT (401 error)</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2082576#M18657</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Mod Header is used in the article below to inject the JWT Bearer Token as an "Authorization" header to log into Qliksense. But I would like to do the same through Javascript.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://community.qlik.com/t5/Official-Support-Articles/Qlik-Sense-How-to-set-up-JWT-authentication/ta-p/1716226?_ga=2.107852801.261853498.1607958694-1710320291.1569419813" target="_blank"&gt;https://community.qlik.com/t5/Official-Support-Articles/Qlik-Sense-How-to-set-up-JWT-authentication/ta-p/1716226?_ga=2.107852801.261853498.1607958694-1710320291.1569419813&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I coded a test webpage with a button which when a user clicks will route the users to my qlik sense URL and authenticate them with JWT.&lt;/P&gt;
&lt;P&gt;** to test the authentication I hardcoded the token.&lt;/P&gt;
&lt;P&gt;Below is a sample of my code:&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="cm-line"&gt;&amp;lt;button&amp;nbsp;onclick="getResponse()"&amp;gt;Click&amp;nbsp;Here&amp;lt;/button&amp;gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;lt;script&amp;nbsp;type&amp;nbsp;=&amp;nbsp;"text/javascript"&amp;gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;getResponse()&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;url&amp;nbsp;=&amp;nbsp;"&lt;A href="https://qliksense/jwt/hub" target="_blank"&gt;https://qliksense/jwt/hub&lt;/A&gt;";&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;token&amp;nbsp;=&amp;nbsp;"xxx";&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;xhr&amp;nbsp;=&amp;nbsp;new&amp;nbsp;XMLHttpRequest();&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.open('GET',&amp;nbsp;url,&amp;nbsp;true);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.setRequestHeader('Content-Type','application/json');&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.setRequestHeader('Accept','application/json');&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.setRequestHeader('Authorization',token);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.onreadystatechange&amp;nbsp;=&amp;nbsp;function()&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(xhr.readyState&amp;nbsp;===&amp;nbsp;4)&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(xhr.status&amp;nbsp;===&amp;nbsp;200)&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(xhr.responseText);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window.location.href&amp;nbsp;=&amp;nbsp;url;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.error(xhr.status);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Although my call is from a local host to the server I did not receive a CORS error. My header was also injected but still cant seem to log in. I used a valid token but I still got a 401 error. I could use the same token to login with my ModHeader extension.&lt;/P&gt;
&lt;P&gt;Any one has any idea how to resolve it?&lt;/P&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 12 Jun 2023 06:12:05 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2082576#M18657</guid>
      <dc:creator>Poh</dc:creator>
      <dc:date>2023-06-12T06:12:05Z</dc:date>
    </item>
    <item>
      <title>Re: Qlik Sense Server: Using Javascript to authenticate users with JWT (401 error)</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2083102#M18665</link>
      <description>&lt;P&gt;Hi &lt;SPAN style="background: var(--ck-color-mention-background); color: var(--ck-color-mention-text);"&gt;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/225675"&gt;@Poh&lt;/a&gt;&lt;/SPAN&gt; aure you specifying the &lt;I&gt;Bearer &lt;/I&gt;before the token? Like: Authorization: `Bearer ${token}`. Could you also try to add localhost and your port in QMC to your jwt virtual proxy configuration under allowed host list?&lt;/P&gt;</description>
      <pubDate>Tue, 13 Jun 2023 07:37:09 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2083102#M18665</guid>
      <dc:creator>alex_colombo</dc:creator>
      <dc:date>2023-06-13T07:37:09Z</dc:date>
    </item>
    <item>
      <title>Re: Qlik Sense Server: Using Javascript to authenticate users with JWT (401 error)</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2083104#M18666</link>
      <description>&lt;P&gt;Hi &lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/145804"&gt;@alex_colombo&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;Yes, I am specifying the Bearer before the token.&lt;/P&gt;
&lt;P&gt;I have also added the white list in the Advanced section of my jwt virtual proxy.&lt;/P&gt;
&lt;P&gt;localhost:9000/test.html&lt;/P&gt;
&lt;P&gt;*test.html is my html file which i code my button in&lt;/P&gt;
&lt;P&gt;In addition I also added the additional response headers&lt;/P&gt;
&lt;P&gt;Access-Control-Allow-Origin:*&lt;/P&gt;
&lt;P&gt;Access-Control-Allow-Methods:*&lt;/P&gt;
&lt;P&gt;Access-Control-Allow-Headers: Content-Type;Accept;Authorization&lt;/P&gt;
&lt;P&gt;However I am still receiving a 401 error.&lt;/P&gt;</description>
      <pubDate>Tue, 13 Jun 2023 07:43:47 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2083104#M18666</guid>
      <dc:creator>Poh</dc:creator>
      <dc:date>2023-06-13T07:43:47Z</dc:date>
    </item>
    <item>
      <title>Re: Qlik Sense Server: Using Javascript to authenticate users with JWT (401 error)</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2083130#M18668</link>
      <description>&lt;P&gt;Please define only this &lt;SPAN style="background-color:rgb(255,255,255);color:rgb(45,51,56);font-size:13px;"&gt;localhost:9000 without your html page and remove all the additional response headers, they are not necesseray.&lt;/SPAN&gt;&lt;BR /&gt;Could you please post:&lt;/P&gt;
&lt;UL&gt;
 &lt;LI&gt;Payload used for generate the token&lt;/LI&gt;
 &lt;LI&gt;A screenshot of the GET call made by JS code with JWT token attached to the header (you can use browser developer tool)&amp;nbsp;&lt;/LI&gt;
 &lt;LI&gt;A screenshot of the GET call made by mod header with JWT token attached to the header (you can use browser developer tool)&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Tue, 13 Jun 2023 08:19:28 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2083130#M18668</guid>
      <dc:creator>alex_colombo</dc:creator>
      <dc:date>2023-06-13T08:19:28Z</dc:date>
    </item>
    <item>
      <title>Re: Qlik Sense Server: Using Javascript to authenticate users with JWT (401 error)</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2083524#M18682</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/145804"&gt;@alex_colombo&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have changed it the whitelist to just localhost:9000 and have removed all additional header response. However, I am still facing the same error.&lt;/P&gt;
&lt;P&gt;Please see below for the requested screenshots:&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;1.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;payload&amp;nbsp;=&amp;nbsp;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;userID:&amp;nbsp;...&amp;nbsp;,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;userDirectory:&amp;nbsp;...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;2. Screen shot by JS code. I think the issues is that there are 2 calls made 1 successful xhr.send and 1 unsuccessful window.open. Cant find any resource online on this. Hope you can help.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Poh_5-1686718413812.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/109998iA3A4F778C14670CF/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Poh_5-1686718413812.png" alt="Poh_5-1686718413812.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Poh_6-1686718427816.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/109999i1B8BBCFBE9FBAC40/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Poh_6-1686718427816.png" alt="Poh_6-1686718427816.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Poh_7-1686718442822.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/110000i68C1E5E4C3C04F2A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Poh_7-1686718442822.png" alt="Poh_7-1686718442822.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;3. Screen shot by ModHeader&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Poh_3-1686718374971.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/109996iF72A2BCAF1C82BD0/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Poh_3-1686718374971.png" alt="Poh_3-1686718374971.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Poh_4-1686718387461.png" style="width: 400px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/109997i6F69D54C898E4AA2/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Poh_4-1686718387461.png" alt="Poh_4-1686718387461.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 14 Jun 2023 04:55:19 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2083524#M18682</guid>
      <dc:creator>Poh</dc:creator>
      <dc:date>2023-06-14T04:55:19Z</dc:date>
    </item>
    <item>
      <title>Re: Qlik Sense Server: Using Javascript to authenticate users with JWT (401 error)</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2083685#M18684</link>
      <description>&lt;P&gt;Point 1 (payload), please verify which configuration you have in the virtual proxy for authentication section, you should have userId (not userID) for JWT attribute for user ID.&lt;/P&gt;
&lt;P&gt;Point 2, first call is ok, so you are authenticated. Please check if your code is making that second call (actually I'm seeing three call to the hub, you should have one), becuase that call doesn't have the JWT token attached to the header and then you get 401.&lt;/P&gt;</description>
      <pubDate>Wed, 14 Jun 2023 10:31:39 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2083685#M18684</guid>
      <dc:creator>alex_colombo</dc:creator>
      <dc:date>2023-06-14T10:31:39Z</dc:date>
    </item>
    <item>
      <title>Re: Qlik Sense Server: Using Javascript to authenticate users with JWT (401 error)</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2084067#M18689</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/145804"&gt;@alex_colombo&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;Point 1: The JWT token i'm using is correct as I am able to login with the modheader extension. I copied the exact same token to test it with my code above.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Point 2:&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="cm-line"&gt;&amp;lt;button&amp;nbsp;onclick="getResponse()"&amp;gt;Click&amp;nbsp;Here&amp;lt;/button&amp;gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;lt;script&amp;nbsp;type&amp;nbsp;=&amp;nbsp;"text/javascript"&amp;gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;getResponse()&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;url&amp;nbsp;=&amp;nbsp;"&lt;A href="https://qliksense/jwt/hub" target="_blank" rel="nofollow noopener noreferrer"&gt;https://qliksense/jwt/hub&lt;/A&gt;";&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;token&amp;nbsp;=&amp;nbsp;"xxx";&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;xhr&amp;nbsp;=&amp;nbsp;new&amp;nbsp;XMLHttpRequest();&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.open('GET',&amp;nbsp;url,&amp;nbsp;true);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.setRequestHeader('Content-Type','application/json');&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.setRequestHeader('Accept','application/json');&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.setRequestHeader('Authorization',token);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.onreadystatechange&amp;nbsp;=&amp;nbsp;function()&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(xhr.readyState&amp;nbsp;===&amp;nbsp;4)&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(xhr.status&amp;nbsp;===&amp;nbsp;200)&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(xhr.responseText);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window.location.href&amp;nbsp;=&amp;nbsp;url;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.error(xhr.status);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="cm-line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="cm-line"&gt;This is my code above, I made 2 calls to the website. Any idea why would it be 3? and will you be able to assist? I'm kinda stuck.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="cm-line"&gt;Thanks!&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Jun 2023 02:47:40 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2084067#M18689</guid>
      <dc:creator>Poh</dc:creator>
      <dc:date>2023-06-15T02:47:40Z</dc:date>
    </item>
    <item>
      <title>Re: Qlik Sense Server: Using Javascript to authenticate users with JWT (401 error)</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2084354#M18691</link>
      <description>&lt;P&gt;Why do you make 2 calls? Anyway, as good practice if your intent is to get authenticated, don't fetch the entire hub but fetch a smaller resource, like an image or you can point to one of our very simple api like https://_your_sense_server_/qrs/about (for this you need to pass the xrfkey attribute in the url and in the header as described &lt;A href="https://help.qlik.com/en-US/sense-developer/May2023/Subsystems/RepositoryServiceAPI/Content/Sense_RepositoryServiceAPI/RepositoryServiceAPI-Connect-API-Using-Xrfkey-Headers.htm" target="_blank"&gt;here&lt;/A&gt;).&lt;BR /&gt;Another point, I'd change your code from XMLHttpRequest to a simple fetch like &lt;A href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch" target="_blank"&gt;this&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Jun 2023 14:00:23 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/Qlik-Sense-Server-Using-Javascript-to-authenticate-users-with/m-p/2084354#M18691</guid>
      <dc:creator>alex_colombo</dc:creator>
      <dc:date>2023-06-15T14:00:23Z</dc:date>
    </item>
  </channel>
</rss>

