<?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 Re: JWT Authentication with Okta bearer token in Integration, Extension &amp; APIs</title>
    <link>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1657857#M12005</link>
    <description>&lt;P&gt;Thanks Harsh,&lt;/P&gt;&lt;P&gt;Thanks for the reply.&lt;/P&gt;&lt;P&gt;That's not going to work, unfortunately, because Okta will not use the private key provided by Qlik to generate the token. The token is generated by Okta, and the public key certificate is needed to validate it.&lt;/P&gt;</description>
    <pubDate>Mon, 16 Dec 2019 05:22:04 GMT</pubDate>
    <dc:creator>frank_packer_at</dc:creator>
    <dc:date>2019-12-16T05:22:04Z</dc:date>
    <item>
      <title>JWT Authentication with Okta bearer token</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1657831#M12003</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;I'm working on a project that integrates an Angular SPA with a MSSql db back-end and Qlik Sense (Nov 19). I'm using Okta for my IDP and have it set up as follows:&lt;/P&gt;&lt;P&gt;Okta sign-in widget on SPA login page. User logs in and following this my SPA communicates with my db APIs by sending a JWT Authorization bearer token that was generated by Okta on login. I've set up my db to validate the incoming token to provide access and set the db user. This validation is done remotely via Okta's provided method, and this is all working great.&lt;/P&gt;&lt;P&gt;My challenge is to now integrate Qlik with this ecosystem, and I believe that I should be able to set up a JWT virtual proxy to receive the same token that Okta generated. Okta does not provide a public key certificate in PEM format for me to use in setting up the virtual proxy, but they do provide a JWKS that looks like the following example:&lt;/P&gt;&lt;P&gt;{&lt;BR /&gt;"keys":[&lt;BR /&gt;{&lt;BR /&gt;"kty":"RSA",&lt;BR /&gt;"alg":"RS256",&lt;BR /&gt;"kid":"nxbkkwOi08tlMmhhQSbKEBkEcd3IhlhfRTzwHOXl1xc",&lt;BR /&gt;"use":"sig",&lt;BR /&gt;"e":"AQAB",&lt;BR /&gt;"n":"wCIBXVwe9nalkjTb4l2vfp5mDowaL2YoqIr71P0WxDpTIIRuITx7NqNijpOkQ_795YkWMZt8Z9LRRnyf-VA3EE2l9p64sqoCsAG_AJ07YFaPoohkxSq8tJ8nJ01XGco-OuTs3uviSMcZ0eQHC7RdaG7ARe-IglfBkKUfzLHuElO3kH3VanG7_Ageb1hl1DWhiHlqtCCaq9XZVeMbfpcLkU_doE9QThxEN9pZjff83X47qxSwNe9LPWurD-xQ5C0QonSO-VIdpGobEVKHlqu6AYX0H7VEk3H4SNjAr04EagHy6EGktBAMc081SPpMWWUeQuGrmqDPGECed_wBLkUMRQ"&lt;BR /&gt;}&lt;BR /&gt;]&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;I can convert this to a PEM certificate, however Qlik rejects it with the error message that the certificate is invalid.&lt;/P&gt;&lt;P&gt;I'm aware that there is an out-of-the-box method for integrating Qlik and Okta, however there is a specific reason for using JWT rather than SAML in this case.&lt;/P&gt;&lt;P&gt;Any help in setting up a virtual proxy to receive and validate the bearer token from Okta would be greatly appreciated!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 16 Nov 2024 03:49:36 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1657831#M12003</guid>
      <dc:creator>frank_packer_at</dc:creator>
      <dc:date>2024-11-16T03:49:36Z</dc:date>
    </item>
    <item>
      <title>Re: JWT Authentication with Okta bearer token</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1657852#M12004</link>
      <description>&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;Yes because Qlik have their own certificates.&lt;/P&gt;&lt;P&gt;If you are using some opensource certificates it will gives you error.&lt;/P&gt;&lt;P&gt;Just use Qlik certificate and try.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks Regards,&lt;/P&gt;&lt;P&gt;Harsh Gohil&lt;/P&gt;</description>
      <pubDate>Mon, 16 Dec 2019 04:23:07 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1657852#M12004</guid>
      <dc:creator>Harsh_Gohil</dc:creator>
      <dc:date>2019-12-16T04:23:07Z</dc:date>
    </item>
    <item>
      <title>Re: JWT Authentication with Okta bearer token</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1657857#M12005</link>
      <description>&lt;P&gt;Thanks Harsh,&lt;/P&gt;&lt;P&gt;Thanks for the reply.&lt;/P&gt;&lt;P&gt;That's not going to work, unfortunately, because Okta will not use the private key provided by Qlik to generate the token. The token is generated by Okta, and the public key certificate is needed to validate it.&lt;/P&gt;</description>
      <pubDate>Mon, 16 Dec 2019 05:22:04 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1657857#M12005</guid>
      <dc:creator>frank_packer_at</dc:creator>
      <dc:date>2019-12-16T05:22:04Z</dc:date>
    </item>
    <item>
      <title>Re: JWT Authentication with Okta bearer token</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1657916#M12007</link>
      <description>&lt;P&gt;hey,&lt;/P&gt;&lt;P&gt;Did you try this method?&lt;/P&gt;&lt;P&gt;&lt;A href="https://help.qlik.com/en-US/sense/June2019/Subsystems/ManagementConsole/Content/Sense_QMC/SAML-configuration-okta.htm" target="_blank"&gt;https://help.qlik.com/en-US/sense/June2019/Subsystems/ManagementConsole/Content/Sense_QMC/SAML-configuration-okta.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;try this steps if it will helps you &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 16 Dec 2019 08:48:50 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1657916#M12007</guid>
      <dc:creator>Harsh_Gohil</dc:creator>
      <dc:date>2019-12-16T08:48:50Z</dc:date>
    </item>
    <item>
      <title>Re: JWT Authentication with Okta bearer token</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1658266#M12008</link>
      <description>&lt;P&gt;Hi Harsh,&lt;/P&gt;&lt;P&gt;There's a requirement on this project to use JWT, rather than SAML, so I can't use that method.&lt;/P&gt;</description>
      <pubDate>Mon, 16 Dec 2019 22:22:04 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1658266#M12008</guid>
      <dc:creator>frank_packer_at</dc:creator>
      <dc:date>2019-12-16T22:22:04Z</dc:date>
    </item>
    <item>
      <title>Re: JWT Authentication with Okta bearer token</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1658310#M12011</link>
      <description>&lt;P&gt;Update:&lt;/P&gt;&lt;P&gt;I've been in contact with Okta and can confirm that the certificate generated from the JWKS is valid. I've been able to test that the token and public key certificate are both valid by verifying them on jwt.io and can confirm that the algorithm is RS256, which is supported by Qlik.&lt;/P&gt;&lt;P&gt;Everything works great up to this point, however Qlik is still showing the 'Invalid Public Key Certificate' error when the certificate is entered in the virtual proxy configuration screen.&lt;/P&gt;&lt;P&gt;I can't see a reason for Qlik to be refusing to accept the certificate, since it can be confirmed as valid by jwt.io and will successfully decode and validate the payload of the bearer token.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 17 Dec 2019 06:24:37 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1658310#M12011</guid>
      <dc:creator>frank_packer_at</dc:creator>
      <dc:date>2019-12-17T06:24:37Z</dc:date>
    </item>
    <item>
      <title>Re: JWT Authentication with Okta bearer token</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1658370#M12014</link>
      <description>&lt;P&gt;hello,&lt;/P&gt;&lt;P&gt;i dont have any idea but when i was trying to connect with qlik&amp;nbsp; using nodejs that time i have to pass certificates also we have to add one header called certificate = NULL.&lt;/P&gt;&lt;P&gt;so try with your method&amp;nbsp; put certificates = Null, if you have this type of option.&lt;/P&gt;&lt;P&gt;might work for you &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 17 Dec 2019 09:01:40 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1658370#M12014</guid>
      <dc:creator>Harsh_Gohil</dc:creator>
      <dc:date>2019-12-17T09:01:40Z</dc:date>
    </item>
    <item>
      <title>Re: JWT Authentication with Okta bearer token</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1756881#M13442</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/45306"&gt;@frank_packer_at&lt;/a&gt;&amp;nbsp; - we are having the same issue with another Ident provider - were able to solve?&lt;/P&gt;</description>
      <pubDate>Wed, 28 Oct 2020 22:03:27 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1756881#M13442</guid>
      <dc:creator>rbpeterson2</dc:creator>
      <dc:date>2020-10-28T22:03:27Z</dc:date>
    </item>
    <item>
      <title>Re: JWT Authentication with Okta bearer token</title>
      <link>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1760427#M13538</link>
      <description>&lt;P&gt;Hi all. I see that we have the same expectations about making Qlik work with JWT authentication. We made it so I'm sharing the solution, hoping it will help you.&lt;/P&gt;&lt;P&gt;The different examples that you can find on the web are using the Qlik server's certificate for signing the JWT. It's quite confusing ... You have to use the certificate provided by your IdP. You can get it from the discovery mechanism provided by OIDC protocol. Here are the steps :&lt;/P&gt;&lt;P&gt;- Open the discovery page of your IdP :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;https://your.idp.server/.well-known/openid-configuration&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- The response is a json. Look at the &lt;STRONG&gt;jwks_uri&lt;/STRONG&gt; field, and go to this uri. In my case :&amp;nbsp;&lt;A href="https://your.idp.server/.well-known/openid-configuration/jwks" target="_blank" rel="noopener"&gt;https://your.idp.server/.well-known/openid-configuration/jwks&lt;/A&gt; but could be different for you).&lt;/P&gt;&lt;P&gt;- The response is another json describing the keys used for signing the JWT. The specification (JWK) is here :&amp;nbsp;&lt;A href="https://tools.ietf.org/html/rfc7517#section-4" target="_blank" rel="noopener"&gt;https://tools.ietf.org/html/rfc7517#section-4&lt;/A&gt;. It's the same content of what received&amp;nbsp;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/45306"&gt;@frank_packer_at&lt;/a&gt;&amp;nbsp;at the top of this topic.&lt;/P&gt;&lt;P&gt;- The public certificate used to sign the JWT should be provided in the &lt;STRONG&gt;x5c&lt;/STRONG&gt; attribute (for me, at least ...). Following the specification, it's a &lt;STRONG&gt;base_64 encoded DER binary file&lt;/STRONG&gt;. From this string, you can create the file with some tools, for example on linux I'm doing this (some tools should be available in Windows, I'm not very familiar with the Windows console) :&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;echo 'MII...your...certificate...base64...string' | base64 -d &amp;gt; idp.der&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- You can check that the certificate is ok :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;openssl x509 -inform der -in idp.der -text -noout&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- Then convert the DER binary file to a PEM format :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;openssl x509 -inform der -in idp.der -out idp.pem&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- Paste the content of this PEM file in the JWT Virtual Proxy configuration in Qlik, and it should work.&lt;/P&gt;&lt;P&gt;- To be able to check that everything is OK, you can extract the public key from the certificate and paste it on jwt.io to check the signature of your JWTs. For this, get the pub file and paste the content on jwt.io :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;openssl x509 -pubkey -noout -in idp.pem &amp;gt; idp.pub&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- After this, you have to configure the claims in which Qlik should read the&amp;nbsp;&lt;STRONG&gt;userId&lt;/STRONG&gt; and &lt;STRONG&gt;directoryId&lt;/STRONG&gt;, and the value of the &lt;STRONG&gt;aud&lt;/STRONG&gt; claim (Audience) that Qlik should check to allow the JWT. Once the user is authenticated by the proxy, you should provide him for a license. For this you can rely on the claims (attribute mapping in the Virtual Proxy) or on other attributes if you synchronize the directory with UDC (which is not mandatory, as Qlik creates the users in the directory when they authenticate).&lt;/P&gt;&lt;P&gt;- We made it work with a SPA transparent page hosted in a Qlik extension (like a mashup), using an oidc javascript client. What's next is to be able to redirect to this page when the session has ended, so we are working on this. If you have an option for this, please share &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Hope this helps !&lt;/P&gt;&lt;P&gt;Bests&lt;/P&gt;&lt;P&gt;Julien&lt;/P&gt;</description>
      <pubDate>Tue, 10 Nov 2020 18:05:34 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Integration-Extension-APIs/JWT-Authentication-with-Okta-bearer-token/m-p/1760427#M13538</guid>
      <dc:creator>jaclag</dc:creator>
      <dc:date>2020-11-10T18:05:34Z</dc:date>
    </item>
  </channel>
</rss>

