U kunt dit artikel gebruiken om de externe URL’s die door uw custo-manifest-uitbreidingen worden gebruikt, te beveiligen. U zult zien hoe u vertrouwde domeinen kunt aangeven, CORS of toegang tot het lokale netwerk kunt configureren indien nodig, en hoe u geblokkeerde verzoeken kunt diagnosticeren.
Overzicht
Custo-manifest-extensies kunnen externe URL’s benaderen: REST API-aanroepen, webapplicaties die in een Rainbow-frame zijn ingebed, of het laden van dynamische inhoud. Om te bepalen met welke servers van derden contact mag worden gelegd, hanteert Rainbow een lijst met vertrouwde domeinen die is geconfigureerd in de Rainbow-beheerconsole.
Elk domein dat niet in deze lijst is opgenomen, wordt geblokkeerd. Afhankelijk van het type extensie uit zich deze blokkering op verschillende manieren — daarom is het essentieel om dit mechanisme te begrijpen voordat u een manifest implementeert.
Vertrouwde domeinen configureren
De lijst wordt beheerd in de Rainbow-beheerconsole:
Bedrijf → Informatie → Aanpassing → Domeinen voor aangepaste manifesten
|
|
Rainbow-console — Aanpassing → tabblad Aangepaste manifestdomeinen
Voeg één vermelding per toegestane oorsprong toe. Elke vermelding moet de volgende indeling volgen:
<protocol>://<domein>[:<poort>]| Deel | Regels |
| protocol | https of http — verplicht |
| domein | Exacte hostnaam of joker (*.example.com) |
| poort | Optioneel — laat weg voor standaardpoorten (443 / 80) |
| Afsluitende schuine streep / | Niet toegestaan — de invoer komt dan niet overeen |
Geldige voorbeelden
| Invoer | Komt overeen met |
| https://crm.example.com | https://crm.example.com/any/path |
| https://crm.example.com:8443 | Afwijkende poort |
| https://*.example.com | Alle subdomeinen |
| http://192.168.1.100:3300 | Lokale server op een privénetwerk |
Ongeldige voorbeelden
| Invoer | Probleem |
| crm.example.com | Ontbrekend protocol |
| https://crm.example.com/ | Afsluitende schuine streep — afgewezen |
| https://crm.example.com/api | Pad niet toegestaan — geef alleen de oorsprong op |
Toepassingsgebied van vertrouwde domeinen
De controle op vertrouwde domeinen wordt consequent toegepast op URL’s die door Rainbow Extensions op het web en op de desktop worden gebruikt.
| Manifestveld of gebruik | Gevolgen voor vertrouwde domeinen |
|---|---|
command.url |
Gecontroleerd voor REST-aanroepen, webnavigatie en gebruiksscenario’s met bestanden of navigatie waarin naar een URL wordt verwezen. |
on-main-window-actions |
De URL van de ingebedde applicatie moet als vertrouwd worden aangemerkt, tenzij Popup: true wordt gebruikt. |
adaptiveCardSubmitUrl |
Het POST-eindpunt dat door Action.Submit wordt gebruikt, moet vertrouwd zijn. |
urlConfig |
Configuratie-URL’s die door widgets of ingebedde applicaties worden gebruikt, moeten vertrouwd zijn. |
Gevolgen voor REST API-aanroepen
Extensies die een REST-API aanroepen (commandType: "rest") verlopen via de browser. Er zijn twee onafhankelijke beveiligingslagen van toepassing:
Controle op vertrouwd domein (Rainbow-zijde)
Indien de oorsprong van de REST-server niet is opgegeven in de Rainbow-console, geeft Rainbow een waarschuwing weer wanneer het manifest wordt geladen. Indien de waarschuwing wordt genegeerd, zal de aanroep tijdens de uitvoering stilzwijgend mislukken — er wordt geen foutmelding weergegeven in Rainbow.
Oplossing: geef de oorsprong op in Bedrijf → Aanpassing → Aangepaste manifestdomeinen.
CORS (REST-serverzijde)
Zelfs als het domein door Rainbow als vertrouwd wordt beschouwd, dwingt de browser ook CORS af. De REST-server moet de volgende headers in zijn antwoorden retourneren:
Access-Control-Allow-Origin: https://web.openrainbow.com
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type, AuthorizationIndien u de toegang tot een specifieke oorsprong niet hoeft te beperken, kunt u het jokerteken gebruiken:
Access-Control-Allow-Origin: *Indien de server deze headers niet retourneert, blokkeert de browser de aanroep zonder dat er een melding in Rainbow verschijnt. Indien u de server beheert, voeg dan de CORS-headers toe. Anders dient u de eigenaar van de server te verzoeken de configuratie bij te werken.
Toegang tot het lokale netwerk (LNA)
Als de REST-server op een lokaal of privé-netwerk draait (bijv. http://192.168.1.100:3300), kan de browser de aanroep blokkeren op grond van het beleid voor lokale netwerktoegang.
Wanneer de browser een verzoek naar een privénetwerk detecteert, verzendt deze eerst een preflight OPTIONS-verzoek met:
Access-Control-Request-Private-Network: trueDe server moet hierop reageren door Access-Control-Allow-Private-Network: true toe te voegen aan zijn CORS-headers:
Access-Control-Allow-Origin: https://web.openrainbow.com
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Private-Network: trueIndien deze header ontbreekt, blokkeert de browser het verzoek, zelfs als de standaard CORS-headers correct zijn.
Oplossingen afhankelijk van de context:
| Aanpak | Wanneer te gebruiken |
| Access-Control-Allow-Private-Network: true | U beheert de lokale server en wilt dat deze werkt op Rainbow Web |
| Beschikbaar maken via HTTPS + opzoekbare hostnaam | Implementatie in de productieomgeving |
| Reserveer de extensie uitsluitend voor Rainbow Desktop | U hebt geen controle over de lokale server |
Gevolgen voor ingebedde applicaties
De extensie „on-main-window-actions” geeft een webtoepassing van een derde partij weer binnen de Rainbow-interface. Afhankelijk van de waarde van „Popup” zijn er twee modi beschikbaar.
Zonder Popup — applicatie binnen het Rainbow-frame
De applicatie wordt geladen in een <IFRAME> binnen Rainbow. Er zijn drie beveiligingslagen van toepassing:
Vertrouwde domeinen
De URL van de applicatie moet in de Rainbow-console worden opgegeven. Indien dit niet het geval is, verschijnt het frame wel, maar blijft de pagina leeg of wordt er een beveiligingsfout van de browser weergegeven.
CSP / X-Frame-Options van de applicatie
De doeltoepassing kan zelf weigeren om in een iframe te worden ingebed:
| Header | Typische waarde | Effect |
| X-Frame-Options | DENY of SAMEORIGIN | Weigert insluiting — leeg frame |
| Content-Security-Policy | frame-ancestors 'self' of 'none' | Hetzelfde effect, modern mechanisme |
Hoe u dit kunt controleren: Ontwikkelaarstools → tabblad Netwerk → reactie van de URL van de toepassing → kopteksten inspecteren.
Oplossing: Indien u de applicatie beheert, sta dan de Rainbow-oorsprong toe in frame-ancestors. Anders schakelt u over naar Popup: true (zie §3.2).
SSO-/OAuth-stroom via een domein van een derde partij
Indien de applicatie gebruikmaakt van een authenticatiestroom (SSO, OAuth 2.0, SAML…), bevindt de identiteitsprovider (IdP) zich doorgaans op een ander domein dan de applicatie. Rainbow laadt deze omleidingen binnen hetzelfde frame — daarom moeten alle domeinen in de stroom worden opgegeven:
https://app.example.com ← de applicatie
https://login.microsoftonline.com ← Microsoft IdP
https://login.example.com ← uw interne IdPMet Popup: true — applicatie in een apart venster
Wanneer Popup: true is ingesteld, wordt de URL geopend in een apart browservenster, buiten het Rainbow-frame. In deze modus:
- is de controle op vertrouwde domeinen van Rainbow voor die URL uitgeschakeld.
- De X-Frame-Options- en CSP-beperkingen voor frame-ancestors van de applicatie zijn niet van toepassing.
- SSO- en OAuth-processen werken normaal in hun eigen venster.
"on-main-window-actions": [{
"name": "My App",
"icon": "${custo.path}\\app.png",
"Popup": true,
"command": {
"url": "https://app.example.com/",
"params": "user=${localUser.email}"
}
}]Speciaal geval bij lokale uitvoering
Lokale uitvoering van applicaties of scripts met commandType: "file" op Rainbow Desktop valt niet onder de CORS-regels van de browser, lokale netwerktoegang of beveiligingsheaders voor iframes.
Veelvoorkomende problemen en probleemoplossing
Er verschijnt een waarschuwing bij het laden van het manifest
Het manifest verwijst naar een of meer URL’s waarvan de oorsprong niet in de console is opgegeven.
Oplossing: Voeg de ontbrekende oorsprong toe in Bedrijf → Aanpassing → Aangepaste manifestdomeinen.
Een REST-aanroep levert geen resultaat op
| Mogelijke oorzaak | Hoe u dit kunt controleren | Oplossing |
| Domein niet gedeclareerd | Waarschuwing bij het laden van het manifest | Geef de oorsprong op in de console |
| Ontbrekende CORS-headers | Ontwikkelaarstools → Tabblad Netwerk → CORS-fout | Voeg Access-Control-Allow-Origin toe op de server |
| LNA (lokale server) | Werkt op de desktop, maar niet op het web | Maak de inhoud beschikbaar via HTTPS of gebruik de desktopversie |
Het frame blijft leeg
| Mogelijke oorzaak | Hoe u dit kunt controleren | Oplossing |
| Domein niet opgegeven | Waarschuwing bij het laden van het manifest | Geef de oorsprong op in de console |
| Beperkende X-Frame-Options of CSP | Ontwikkelaarstools → responsheaders | Wijzig de headers aan de app-zijde of gebruik Popup: true |
| SSO IdP-domein niet opgegeven | Het venster wordt leeg tijdens de aanmeldingsstap | Geef ook het IdP-domein op |
| IdP weigert iframes | Het frame blijft leeg na het opgeven van het domein | Schakel over naar Popup: true |
Diagnostische checklist
- De oorsprong is opgegeven in Bedrijf → Aanpassing → Aangepaste manifestdomeinen
- De REST-server retourneert CORS-headers (Access-Control-Allow-Origin)
- De server bevindt zich niet op een lokaal/privé-netwerk (LNA — alleen web)
- De ingebedde app retourneert geen restrictieve X-Frame-Options of CSP: frame-ancestors
- Voor SSO / OAuth: IdP-domeinen zijn eveneens aangemerkt als vertrouwd
- Indien niets anders werkt: Popup: true getest voor frames, Desktop getest voor lokale REST-aanroepen