Mashups migreren
Niet alle mashups worden op dezelfde manier geïmplementeerd. Beschouw het volgende als een richtlijn voor de overwegingen die u moet maken bij het migratieproces voor mashups. Zorg dat u het onderstaande hebt voltooid voordat u mashups gaat migreren:
-
U hebt een Qlik Cloud-tenant geïmplementeerd en geconfigureerd.
-
Gebruikers kunnen authenticeren via de IdP en de noodzakelijke apps zijn gemigreerd naar de geschikte gedeelde of beheerde ruimten, waar gebruikers minimaal de machtiging Kan bekijken moeten hebben. Voor meer informatie over ruimtemachtigingen raadpleegt u Machtigingen beheren in gedeelde ruimten en Machtigingen beheren in beheerde ruimten.
-
Toegang tot de tenant met de rol Tenantbeheerder (vereist voor het maken van een webintegratie).
U moet bekend zijn met de manier waarop Qlik Sense-mashups doorgaans worden geïmplementeerd via JavaSCript en HTML en of ze objecten invoegen met IFrames of met de Qlik Capability API's.
Voor de duidelijkheid: nieuwe mashups verwijzen naar mashups in Qlik Cloud en oude mashups verwijzen naar bestaande mashups in Qlik Sense met clientbeheer.
Webintegraties
Uw nieuwe mashups in Qlik Cloud zullen inhoud van uw Qlik Cloud-tenant laden en invoegen in plaats van inhoud van Qlik Sense met clientbeheer. U moet een webintegratie in Qlik Cloud configureren zodat deze uw mashupwebsite (herkomst) kan identificeren.
Webintegraties zijn een beveiligingsmechanisme waarmee websites met een geldige id gekoppeld kunnen worden aan een lijst met opgenomen URL's om ingevoegde visualisaties te renderen. Voor webapplicaties die werken met Qlik Cloud moet u een webintegratie configureren in uw tenant.
Een nieuwe webintegratie maken in Qlik Cloud
U moet een tenantbeheerder in Qlik Cloud zijn om een webintegratie te maken.
Doe het volgende:
- Ga in de Beheerconsole naar de sectie Web en klik rechtsboven op Nieuwe maken.
-
In het dialoogvenster dat verschijnt, geeft u de webintegratie een naam.
-
Typ het adres van de bron, waarbij u de volgende indeling gebruikt: https://domein.com. Klik op Toevoegen om de oorsprong toe te voegen aan de acceptatielijst.
InformatieU kunt meer dan één oorsprong toevoegen. - Klik op Maken.
Nadat u de webintegratie hebt gemaakt, ontvangt u een id. Dit is de qlik webintegratie-id voor uw mashup. Dit is een vereist kenmerk of een vereiste parameter in de nieuwe mashupcode.
Voor meer informatie over het maken van webintegraties raadpleegt u Webintegraties beheren.
Verificatie
Mashups in Qlik Sense met clientbeheer voeren de authenticatie meestal uit via een virtuele proxy waar het authenticatiemechanisme al is geconfigureerd. De opties omvatten o.a. koptekst, ticket, SAML, JWT, OpenID Connect ( OIDC) en anoniem. Ga voor meer informatie naar Authenticatie-oplossingen (alleen in het Engels).
In uw oude mashup van Qlik Sense met clientbeheer, wordt de authenticatie verwerkt in de code voordat resources, waaronder de noodzakelijke statische bestanden en bibliotheken van Qlik, door middel van deze virtuele proxy worden geladen.
Bijvoorbeeld:
-
Met ticket en JWT vindt er meestal een aanroep plaats naar de back-end authenticatiemodule om op veilige wijze een Qlik-ticket of een JWT-token te maken.
-
Met koptekst stellen sommige onderliggende modules of een omgekeerde proxy de geschikte koptekst in.
-
Voor OIDC en SAML moet er een eerste omleiding zijn naar de bijbehorende identiteitsprovider die de authenticatiestroom activeert om de sessie met Qlik Sense te starten zodat het resources kan laden resources en inhoud kan insluiten.
Qlik Cloud gebruikt geen virtuele proxy. Deze gebruikt in plaats daarvan een webintegratie die u in de tenant maakt. Voor authenticatie zijn de volgende twee mechanismen beschikbaar:
-
Interactieve aanmelding—Dit mechanisme vertrouwd op de geconfigureerde IdP die uw tenant gebruikt voor regelmatige toegang. Standaard is dit de Qlik Account IdP of een van de andere beschikbare opties zoals Okta, Auth0, ADFS, AzureAD, Salesforce, Generic en Keycloak.
-
JSON Web Tokens (JWT)—Dit authenticatiemechanisme vertrouwd op ondertekende JWT-tokens die doorgaans op veilige wijze door een back-endservice worden gegenereerd. In dit geval moet er een geconfigureerde identiteitsprovider van het type JWT aanwezig zijn.
Mashups waarQlikobjecten zijn ingesloten met Capability API's.
Authenticatie met behulp van interactieve aanmelding
Potentiële code-updates voor HTML
Net als bij uw mashup van Qlik Sense met clientbeheer, moet u twee statische Qlik-bestanden laden in de <head> sectie in html (qlik-styles.css en require.js). Maar bij Qlik Cloud zijn deze bestanden direct toegankelijk en er is geen authenticatie vereist.
Potentiële code-updates voor JavaScript
Als uw mashup van Qlik Sense met clientbeheer gebruikmaakt van Capability API's voor het insluiten en werken met objecten voorQlik Sense met clientbeheer, controleer dan de volgende code waarmee in dit voorbeeld verschillende visualisaties worden ingesloten met behulp van de Capability API Qlik-bibliotheek.
Configuratievariabele en baseURL voor require
Voor uw nieuwe Qlik Cloud-mashup, moet de configuratievariabele de host en webIntegrationId van uw tenant weerspiegelen. Aangezien er geen virtuele proxy is, moet de prefix / zijn. U kunt een identiteitskenmerk instellen zodat de sessie niet wordt gedeeld en alleen wordt gebruikt voor de context van deze mashup. De poort moet 443 zijn, dit impliceert dat isSecure altijd waar is.
De require configuratie moet uw webIntegrationId bevatten en baseUrl is eenvoudiger omdat communicaties naar Qlik Cloud altijd via poort 443 plaatsvinden.
Capability API's laden
Voordat u de Qlik Capability API-bibliotheek met require (js/qlik) laadt, moet u controleren of de gebruiker al is aangemeld. Dit kunt u bijvoorbeeld doen door een REST API-aanroep te activeren voor het metagegevens-eindpunt van de huidige gebruiker. Als de responsstatus niet 200 is, moet de code omleiden naar het aanmeldscherm, waarbij twee parameters in de URL worden ingevoerd: returnto (de werkelijke mashup-URL) en qlik-web-integration-id.
De code wordt als volgt uitgevoerd:
-
Controleer of de gebruiker al is aangemeld via een GET-aanvraag naar het /api/v1/users/me REST API-eindpunt.
-
Indien negatief (responsstatus is niet 200), wordt u omgeleid naar het aanmeldscherm/login en voegt u return to en qlik-web-integration-id parameters toe.
-
Indien positief (responsstatus is 200), laad de qlik/js Capability API-bibliotheek met require en blijft deze verzameling API's gebruiken.
-
De uiteindelijke code lijkt op die uit het volgende voorbeeld. Met JavaScript is er niet één unieke manier om de perfecte code te schrijven. Dit is slechts een geldige optie.
Authenticatie via JSON Web Token (JWT)
Een JWT-identiteitsprovider configureren
Een JWT-token is het resultaat van de versleuteling van elke nettolading van metagegevens van gebruikers (zoals naam, e-mail, groepen, onderwerp) die met een persoonlijke sleutel van het certificaat veilig worden ondertekend. Iedereen met de bijbehorende openbare sleutel van het certificaat kan de token valideren en de gebruikersgegevens daarin lezen.
Om Qlik Cloud in staat te stellen om uw ondertekende JTW-tokens te valideren, moet u een identiteitsprovider van het type JTW configureren in uw Qlik Cloud-tenant. Nadat deze is geconfigureerd, kan de tenant API-aanvragen accepteren en valideren die een juist ondertekende bearer-JWT-token bevatten.
Doe het volgende:
-
In de beheerconsole selecteert u Identiteitsprovider in de sectie Configuratie om een nieuwe te maken.
-
Plak de openbare sleutel van het certificaat in de PEM-indeling in het bovenstaande vak Certificaat.
Als uw oude mashup JWT al gebruikt voor authenticatie met Qlik Sense met clientbeheer, weet u mogelijk al welke persoonlijke en openbare sleutels van het certificaat worden gebruikt. U hebt mogelijk al een back-endservice voor het maken van ondertekende JWT-tokens. Indien niet, raadpleeg dan Ondertekende tokens maken voor JWT-autorisatie.
-
U kunt bovendien de Verlener en Sleutel-id opgeven, op beide manieren krijgt u deze waarden na het aanmaken.
Potentiële code-updates voor back-endservice van ondertekende JWT-token
Met Qlik Sense met clientbeheer is voor de nettolading voor het genereren van een JWT-token alleen de gebruikers-id en gebruikersmap vereist, zoals vereist door de virtuele proxy in Qlik Sense voor JWT-authenticatie. Met Qlik Cloud zijn voor deze nettolading meer en verschillende claimkenmerken vereist.
U moet de back-endservicecode voor het genereren van de JWT-token wijzigen voor de nettoladig, samen met de noodzakelijke ondertekenopties om de vereisten voor Qlik Cloud te reflecteren. Bijvoorbeeld de verlener en sleutel-id van de JWT-identiteitsprovider zijn vereiste ondertekenopties. Zie JWT-indeling voor autorisatie van Qlik Sense voor een complete beschrijving.
Potentiële code-updates voor HTML
Net als bij uw mashup van Qlik Sense met clientbeheer, moet u twee statische Qlik-bestanden laden in de <head> sectie in html (qlik-styles.css en require.js). Maar bij Qlik Cloud zijn deze bestanden direct toegankelijk en er is geen authenticatie vereist.
Potentiële code-updates voor JavaScript
Het codeconcept is vergelijkbaar met het gebruik van interactieve aanmelding. In dit geval moet u in plaats van een omleiding naar het algemene aanmeldschern een JWT-sessie initiëren met een POST-aanvraag naar het /login/jwt-session eindpunt, zodat de kopteksten voor de bearer-JWT-token en de webintegratie-id worden doorgegeven.
Doe het volgende:
-
Controleer of de gebruiker al is aangemeld via een aanvraag naar het /api/v1/users/me REST API-eindpunt.
-
Indien positief (responsstatus is 200), laad en gebruik de qlik/js Capability API-bibliotheek met require.
-
Indien negatief (responsstatus is niet 200), activeer dan een POST-aanvraag om de JTW-sessie te initiëren met de opgegeven ondertekende JWT-token.
-
Indien positief, laad en gebruik de qlik/js Capability API-bibliotheek met require.
-
-
Indien negatief, is het waarschijnlijk dat de JWT-authenticatie is mislukt omdat de JWT ongeldig, verlopen of niet geaccepteerd is.
-
Hieronder volgt een codevoorbeeld van het proces dat hierboven staat beschreven.
Capability API's en compatibiliteit in Qlik Cloud
De Capability API's zijn een JavaScript-bibliotheek waarmee u kunt werken met een verzameling van verschillende API's, zoas Root API, Visualization API, App API, Global API, Field API, Table API, Variable API en meer. Zie Capability API's voor een volledige lijst.
Er bestaat een vrijwel volledige compatibiliteit tussen Qlik Cloud en Qlik Sense met clientbeheer bij het gebruik van Capability API's voor uw webapplicatie, maar er zijn enkele subtiele verschillen of niet-beschikbare methoden als u deze JavaScript-bibliotheek gebruikt voor websites met Qlik Cloud-implementaties. Bijvoorbeeld: Global API is niet beschikbaar in Qlik Cloud.
Zie Vergelijking van API tussen producten voor meer informatie.
Mashups waar Qlik-objecten zijn ingesloten met IFrames
Naast het afhandelen van de authenticatie zoals beschreven in Mashups waarQlikobjecten zijn ingesloten met Capability API's., moet u bekend zijn met de manier waarop Qlik Cloud het Content Security Policy (CSP) afhandelt.
Content Security Policy
Het CSP-beleid in Qlik Cloud blokkeert toegang tot Qlik-objecten van andere domeinen. Dit betekent dat bij het insluiten van Qlik-objecten met de afzonderlijke API IFrame u de beleidsfout frame-ancestors ‘self’ krijgt.
Zie Content Security Policy om te leren hoe u CSP configureert zodat uw mashup IFrames kan gebruiken voor het insluiten van Qlik Cloud-objecten.
Mashups die gebruikmaken van enigma.js
De enigma.js-bibliotheek helpt u met het communiceren met de Qlik Associative Engine in JavaScript-omgevingen.
Afzonderlijk van de vereiste verwerking van de webintegratie en gebruikersauthenticatie moet u ook het Cross-site Request Forgery-concept (CSRF) overwegen als u enigma.js voor Qlik gebruikt.
Cross-Site Request Forgery (CSRF)
Qlik Cloud beschikt over tegenmaatregelen als bescherming tegen Cross-Site Request Forgery (CSRF). Een weboplossing die werkt met Qlik Cloud moet een gelde CSRF-token leveren voor alle niet-GET REST-aanroepen, inclusief WebSocket-verbindingen.
Als u enigma.js gebruikt voor uw webapplicatie, in de back-end- of front-endcode, wordt er een WebSocket-verbinding gemaakt. Dit betekent dat er een CRSF-token moet worden opgenomen als parameter van de WebSocket-verbinding voor de enigma.js-bibliotheek om een veilige sessie met Qlik Cloud tot stand te kunnen brengen.
Nadat de gebruiker zich heeft aangemeld, kan een geldige CSRF-token worden aangevraagd voor het /api/v1/csrf-token eindpunt.
Het volgende codevoorbeeld (met een aangemelde gebruiker) van enigma.js is gebruikt in de front-endcode om een app te openen en de lay-out op te halen.
Om een voorbeeld van de volledige code te bekijken, kunt u de volgende zelfstudies raadplegen: